使用Panda的.at函数修改多行

时间:2019-05-08 19:08:38

标签: python pandas dataframe

我对at的使用感到有些困惑。从网站上:

  

访问行/列标签对的单个值。

尽管如此,我仍然可以使用它来更改多行中的值。例如:

df = pd.DataFrame([[0, 2, 3], [0, 2, 1], [10, 20, 30]], index=[0, 1, 2], columns=['A', 'B', 'C'])

    A   B   C
0   0   2   3
1   0   2   1
2  10  20  30

idxs = df[df.B==2].index.values
df.at[idxs, 'A'] = -33

    A   B   C
0 -33   2   3
1 -33   2   1
2  10  20  30

这实际上将更改前两行(列A)中的值。 难道我做错了什么?使用at这样更改多个行是否安全?

1 个答案:

答案 0 :(得分:1)

从技术上讲,.at正在访问行/列标签对的单个值,并一次更改一个。但是您的变量idxs是一个列表,因此将对列表中的每个索引执行该变量。 因此,您的问题的答案是否定的,您没有做错什么,是的,使用.at这样更改多个行是绝对安全的。