我有一个带有很多“坏”单元格的数据框。假设,它们都具有-99.99的值,我想删除它们(将它们设置为NaN)。
这很好用:
df[df == -99.99] = None
但是实际上我只想删除所有这些单元格,如果同一行中的另一个单元格的市场价格为1(例如,在“错误”列中)。
我想删除所有-99.99单元格,但前提是df [“ Error”] == 1。
我最简单的解决方案是
df[(df == -99.99) & (df["Error"] == 1)] = None
但这给了我错误:
ValueError: cannot reindex from a duplicate axis
我尝试了Internet上所有给定的解决方案,但无法正常工作!:(
由于我的Dataframe很大,所以我不想对其进行迭代(这当然可以,但是要花很多时间)。
有什么提示吗?
传递numpy值时尝试使用广播:
# sample data, special value is -99
df = pd.DataFrame([[-99,-99,1], [2,-99,2],
[1,1,1], [-99,0, 1]],
columns=['a','b','Errors'])
# note the double square brackets
df[(df==-99) & (df[['Errors']]==1).values] = np.nan
输出:
a b Errors
0 NaN NaN 1
1 2.0 -99.0 2
2 1.0 1.0 1
3 NaN 0.0 1
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句