假设您有一个数据框
df = pd.DataFrame({'a':[1,2,3,4],'b':[2,4,6,8],'c':[2,4,5,6]})
,并且您想要替换列“ a”和“ c”中的特定值(而不是“ b”)。例如,将2替换为20,将4替换为40。
以下内容将不起作用,因为它是在DataFrame切片的副本上设置值:
df[['a','c']].replace({2:20, 4:40}, inplace=True)
循环将起作用:
for col in ['a','c']:
df[col].replace({2:20, 4:40},inplace=True)
但是循环似乎效率低下。有更好的方法吗?
答案 0 :(得分:0)
根据replace上的文档,您可以为每列指定一个字典:
import pandas as pd
df = pd.DataFrame({'a': [1, 2, 3, 4], 'b': [2, 4, 6, 8], 'c': [2, 4, 5, 6]})
lookup = {col : {2: 20, 4: 40} for col in ['a', 'c']}
df.replace(lookup, inplace=True)
print(df)
输出
a b c
0 1 2 20
1 20 4 40
2 3 6 5
3 40 8 6