Python pandas 修改数据框值
我正在查询一个数据框,内容如下:
>>> 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
但是这些修改在原始的数据框df中完全没有反映出来。我猜这是因为numpy的数组机制,每次都会生成一个新的数据框副本。我想知道,如何在查询数据框时加上一些条件,并对选中的部分进行修改,就像我提供的例子那样,同时让这些修改直接反映到原始的数据框中?
1 个回答
2
你应该这样做:
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'