我正在尝试使用同事写的脚本。
这部分脚本运行正常:
# Clean up the data and report "less than" as half of the LOR
df2 = df.copy()
for col in df2.columns:
x = []
for (a, b) in df2[col].items():
if b == " - ":
b = np.nan
try:
b = float(b)
except:
b = float(b.strip('< '))/2
x.append(b)
df2[col] = x
但这部分不是:
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-4-80ad8c096fc0> in <module>()
4 for col in df2.columns:
5 x = []
----> 6 for (a, b) in df2[col].items():
7 if b == " - ":
8 b = np.nan
C:\Users\SardellaC\AppData\Local\Continuum\Anaconda\lib\site-packages\pandas\core\generic.pyc in __getattr__(self, name)
1938
1939 if name in self._internal_names_set:
-> 1940 return object.__getattribute__(self, name)
1941 elif name in self._metadata:
1942 return object.__getattribute__(self, name)
AttributeError: 'Series' object has no attribute 'items'
我收到以下错误:
{{1}}
这可能与使用的不同版本的Python有关。我对Python并不熟悉,如果有人能指出我正确的方向,我会很感激。
答案 0 :(得分:6)
在迭代Pandas系列时使用iteritems()
代替items()
for (a, b) in df2[col].iteritems():
x = []
....
但是,遍历每一行对于大型数据集来说是一个非常缓慢的过程。您可以使用.apply()
函数简单地完成该部分代码。如果您需要简化代码,请告诉我。