我正在查询如下数据框:
>>> df
A,B,C
1,1,200
1,1,433
1,1,67
1,1,23
1,2,330
1,2,356
1,2,56
1,3,30
如果我执行part_df = df[df['A'] == 1 & df['B'] == 2],我可以获得一个子数据帧
>>> part_df
A, B, C
1, 2, 330
1, 2, 356
1, 2, 56
现在我想对part_df进行一些更改,例如:
part_df['C'] = 0
这些更改根本没有反射(reflect)在原始 df 中。我想这是因为 numpy 的数组机制,每次都会生成数据帧的新副本。我想知道如何在某些条件下查询数据框并对所选部分进行更改(如我提供的示例所示)并将值反射(reflect)回原始数据框?
最佳答案
你应该这样做:
In [28]:
df.loc[(df['A'] == 1) & (df['B'] == 2),'C']=0
df
Out[28]:
A B C
0 1 1 200
1 1 1 433
2 1 1 67
3 1 1 23
4 1 2 0
5 1 2 0
6 1 2 0
7 1 3 30
[8 rows x 3 columns]
您应该使用loc
并在末尾的方括号中选择感兴趣的列“C”
关于Python pandas 更改数据框值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23800080/