Python pandas 修改数据框值

1 投票
1 回答
942 浏览
提问于 2025-04-18 07:16

我正在查询一个数据框,内容如下:

>>> 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'

撰写回答