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
这里需要的是,为什么我们要为循环指定列?