[英]How do I change multiple values in pandas df column to np.nan, based on condition in other column?
[英]Pandas: Change df column values based on condition with iloc
说一个数据框
df = pd.DataFrame([[1,2],[3,4],[5,6]],columns=['A','B'])
A B
0 1 2
1 3 4
2 5 6
现在,我想更改第一列中的单元格。
我可以这样:
df.loc[df['A'] > 1,'A'] = 10
A B
0 1 2
1 10 4
2 10 6
但是,如果我没有任何列名怎么办?
df.iloc[:,0] > 1
给我与df['A'] > 1
相同的掩码
而而
df.loc[df.iloc[:,0] > 1,'A'] = 10
效果很好,
运用
df.iloc[df.iloc[:,0] > 1,1] = 10
在初始df上以某种方式返回此错误:
NotImplementedError:基于整数类型的基于iLocation的布尔索引不可用
有没有办法仅使用整数索引来更改特定单元格?
使用DataFrame.ix
,它是.loc
和.iloc
之间的混合.iloc
:
.ix []支持基于整数和标签的混合访问。 它主要基于标签,但是将退回到整数位置访问,除非相应的轴是整数类型。
在您的情况下:
In [1]: df.ix[df.iloc[:,0]>1,1] = 10
In [2]: df
Out[2]:
A B
0 1 2
1 3 10
2 5 10
编辑 : .ix
现在已正式弃用(自0.20.0起,请参见此处 )
您可以使用.loc
并改用df.columns[i]
,例如。 与上述等效的是:
df.loc[df.iloc[:,0]>1,df.columns[1]] = 10
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.