如何在python数据框中为按行过滤的单元格设置值?
我希望这段代码将C列的值更改为5,无论B是偶数。但它不起作用 它返回如下表如何在python数据框中为按行过滤的单元格设置值?,python,python-3.x,pandas,Python,Python 3.x,Pandas,我希望这段代码将C列的值更改为5,无论B是偶数。但它不起作用 它返回如下表 import pandas as pd df = pd.DataFrame([[1,2,3],[4,5,6],[7,8,9],[10,11,12]],columns=['A','B','C']) df[df['B']%2 ==0]['C'] = 5 我期待它回来 A B C 0 1 2 3 1 4 5 6 2 7 8 9 3 10 11 12 如果需要更改
import pandas as pd
df = pd.DataFrame([[1,2,3],[4,5,6],[7,8,9],[10,11,12]],columns=['A','B','C'])
df[df['B']%2 ==0]['C'] = 5
我期待它回来
A B C
0 1 2 3
1 4 5 6
2 7 8 9
3 10 11 12
如果需要更改
数据框中列的值,则必须使用条件和列名:
A B C
0 1 2 5
1 4 5 6
2 7 8 5
3 10 11 12
您的解决方案是链式索引的好例子-。您只需将顺序更改为:
df.loc[df['B']%2 ==0, 'C'] = 5
print (df)
A B C
0 1 2 5
1 4 5 6
2 7 8 5
3 10 11 12
它还可以使用numpy在哪里工作
df['C'][df['B']%2 == 0] = 5
输出
df['C'] = np.where(df['B']%2 == 0, 5, df['C'])
而不是,因为warning-tnx:)但是运行此代码不会产生警告。可能是个bug?嗨@jezrael,这种方法对我不起作用,因为pandas
根据此页面改变了它的行为:@garciparedes-这是另一个问题,请检查
A B C
0 1 2 5
1 4 5 6
2 7 8 5
3 10 11 12