我有一个数据框,我试图根据值删除项目。
for i in range (1, len(df['column1'])):
if df['column1'].iloc[i][0] < 2.5:
del df['column1'].iloc[i]
收到错误:
AttributeError Traceback (most recent call last)
<ipython-input-80-8b343357b723> in <module>()
16 for i in range (1, len(df_agg2['water_amount']-1)):
17 if df_agg2['water_amount'].iloc[i][0] < 2.5:
---> 18 del df_agg2['water_amount'].iloc[i]
AttributeError: __delitem__
例如:
df['column1'].iloc[1]
返回:
sum 1.422883
Name: 4, dtype: float64
和
df['column1'].iloc[1][0]
返回:
1.4228829999999981
如何避免上面提到的AttributeError,以便在项目小于2.5时删除它?
答案 0 :(得分:1)
您的问题不明确,假设您需要在小于2.5时移除单元格。请记住,您实际上无法移除单元格,而是使用np.Nan
替换该单元格df.ix[df.column1 <2.5, 'column1'] = np.NaN
如果值小于2.5
,也可以删除整行print df[df.joint1_pt >2.5]
答案 1 :(得分:1)
如果你想根据一个列从一个框架中删除行,你可以像这样选择反向:
In [7]: df = pd.DataFrame({'foo': ['test', 'this', 'not'], 'column1': [13, 0.2, 10]})
In [8]: df
Out[8]:
column1 foo
0 13.0 test
1 0.2 this
2 10.0 not
In [9]: df[df.column1 >= 2.5]
Out[9]:
column1 foo
0 13.0 test
2 10.0 not