问题描述
数据可以在这里找到https://github.com/dqc002/Learning/blob/main/Data%20gathered.csv
KeyError Traceback (most recent call last)
<ipython-input-79-4bdbdff831dc> in <module>
14
15
---> 16 data['STATUS'] = data['ACT-STATUS'].apply(lambda x: ACT[x])
17 data
~\anacondafinal\envs\forcartopy\lib\site-packages\pandas\core\series.py in apply(self,func,convert_dtype,args,**kwds)
4136 else:
4137 values = self.astype(object)._values
-> 4138 mapped = lib.map_infer(values,f,convert=convert_dtype)
4139
4140 if len(mapped) and isinstance(mapped[0],Series):
pandas\_libs\lib.pyx in pandas._libs.lib.map_infer()
<ipython-input-79-4bdbdff831dc> in <lambda>(x)
14
15
---> 16 data['STATUS'] = data['ACT-STATUS'].apply(lambda x: ACT[x])
17 data
KeyError: '6'
data=pd.read_csv('Data gathered1.csv')
data
ACT = {'0': 'No Activity','1A' : 'CONTAMINATION CONFIRMED','1B' : 'CONTAMINATION CONFIRMED','2A' :'INVESTIGATION','2B': 'INVESTIGATION','3':'CORRECTIVE ACTION PLANNING','4': 'IMPLEMENT ACTION','5': 'MONITOR ACTION','6A':'ACTION COMPLETED','6B':'ACTION COMPLETED','6C': 'INACTIVE','6D': 'INACTIVE'
}
data['STATUS'] = data['ACT-STATUS'].apply(lambda x: ACT[x])
data
解决方法
您可能想在这里使用“地图”。基于数据集,这里是通过 map-
的输入/输出ACT = {'0': 'No Activity','1A' : 'CONTAMINATION CONFIRMED','1B' : 'CONTAMINATION CONFIRMED','2A' :'INVESTIGATION','2B': 'INVESTIGATION','3':'CORRECTIVE ACTION PLANNING','4': 'IMPLEMENT ACTION','5': 'MONITOR ACTION','6A':'ACTION COMPLETED','6B':'ACTION COMPLETED','6C': 'INACTIVE','6D': 'INACTIVE'
}
df['ACT-STATUS 5.236'] = df['ACT-STATUS 5.236'].astype(str)
df['STATUS'] = df['ACT-STATUS 5.236'].map(ACT)
print(df[['ACT-STATUS 5.236','STATUS']])
ACT-STATUS 5.236 STATUS
0 0 No Activity
1 0 No Activity
2 2A INVESTIGATION
3 2A INVESTIGATION
4 6 NaN
5 1A CONTAMINATION CONFIRMED
6 6 NaN
7 6 NaN
8 6 NaN
9 nan NaN
,
首先,您的 [Running] scala "c:\Users\ahmed\Desktop\scala\tempCodeRunnerFile.scala"
Exception in thread "main" java.lang.IllegalArgumentException: name
at java.base/jdk.internal.loader.URLClassPath$Loader.getResource(URLClassPath.java:636)
at java.base/jdk.internal.loader.URLClassPath.getResource(URLClassPath.java:314)
at java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:455)
at java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:452)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:451)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:589)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:398)
at scala.reflect.internal.util.RichClassLoader$.$anonfun$tryClass$extension$1(ScalaClassLoader.scala:47)
at scala.util.control.Exception$Catch.$anonfun$opt$1(Exception.scala:245)
at scala.util.control.Exception$Catch.apply(Exception.scala:227)
at scala.util.control.Exception$Catch.opt(Exception.scala:245)
at scala.reflect.internal.util.RichClassLoader$.tryClass$extension(ScalaClassLoader.scala:47)
at scala.reflect.internal.util.ScalaClassLoader.tryToLoadClass(ScalaClassLoader.scala:41)
at scala.reflect.internal.util.ScalaClassLoader.tryToLoadClass$(ScalaClassLoader.scala:119)
at scala.reflect.internal.util.ScalaClassLoader$URLClassLoader.tryToLoadClass(ScalaClassLoader.scala:161)
at scala.reflect.internal.util.ScalaClassLoader$.classExists(ScalaClassLoader.scala:189)
at scala.tools.nsc.GenericRunnerCommand.guessHowToRun(GenericRunnerCommand.scala:43)
at scala.tools.nsc.GenericRunnerCommand.<init>(GenericRunnerCommand.scala:62)
at scala.tools.nsc.GenericRunnerCommand.<init>(GenericRunnerCommand.scala:25)
at scala.tools.nsc.MainGenericRunner.process(MainGenericRunner.scala:45)
at scala.tools.nsc.MainGenericRunner$.main(MainGenericRunner.scala:108)
at scala.tools.nsc.MainGenericRunner.main(MainGenericRunner.scala)
[Done] exited with code=1 in 0.99 seconds
的列标题有一些空格,如 Data gathered.csv
和额外的数据,如 FILE NAME
。
ACT-STATUS 5.236
然后当你做 COUNTY,Division,FILE NAME,File Number,LOCATION,LATITUDE,LONGITUDE,CONTAMINANTS,DATE,ENF-STATUS,ACT-STATUS 5.236,Category
时,pandas 会将 data['ACT-STATUS'].apply(lambda x: ACT[x])
列的值视为 ACT-STATUS
,然后使用 x
作为 x
字典的键来查找值.但是,您的 ACT
字典没有键 ACT
。所以它给了你错误。你可能想要
6
如果在 import numpy as np
data['ACT-STATUS'].apply(lambda x: ACT.get(x,np.NaN))
的键中找不到 ACT.get(x,np.NaN)
,NaN
将返回 x
。
ACT
给出以下结果
data['ACT-STATUS 5.236'].unique()
['0' '2A' '6' '1A' '4' '5' '4,5A' '2B' '3' '6C']
也是一个大纲值。您可能需要想出一个解决方法来处理这个问题。