Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python数据框中为按行过滤的单元格设置值?_Python_Python 3.x_Pandas - Fatal编程技术网

如何在python数据框中为按行过滤的单元格设置值?

如何在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 如果需要更改

我希望这段代码将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

如果需要更改
数据框中列的值,则必须使用条件和列名:

    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