Pandas 更新if循环中的列值会覆盖数据帧中的其他列

Pandas 更新if循环中的列值会覆盖数据帧中的其他列,pandas,dataframe,Pandas,Dataframe,我试图迭代列并更新每列中的值。这是演示该问题的示例代码 import pandas as pd a = [ {'A': 'a', 'B': 'b', 'C': 'c'}, {'A': 'a', 'B': 'b', 'C': 'c'}, {'A': 'a', 'B': 'b', 'C': 'c'}, ] df = pd.DataFrame(a) for i, c in enumerate(df.columns): print(c, i) df[df[

我试图迭代列并更新每列中的值。这是演示该问题的示例代码

import pandas as pd 

a = [
    {'A': 'a', 'B': 'b', 'C': 'c'},
    {'A': 'a', 'B': 'b', 'C': 'c'},
    {'A': 'a', 'B': 'b', 'C': 'c'},
]

df = pd.DataFrame(a)

for i, c in enumerate(df.columns):
    print(c, i)
    df[df[c] == 'a'] = i

df
输出结果如下所示:

A 0
B 1
C 2

   A  B  C
0  0  0  0
1  0  0  0
2  0  0  0
它应该是这样的:

   A  B  C
0  0  b  c
1  0  b  c
2  0  b  c

循环的第一步将更改所有列。

为中的设置值选择列,否则将替换所有列:

for i, c in enumerate(df.columns):
    print(c, i)
    df.loc[df[c] == 'a', c] = i

print (df)
   A  B  C
0  0  b  c
1  0  b  c
2  0  b  c

这里需要的是,为什么我们要为循环指定列?