Python / Pandas-替换特定列中的值的最有效方法是什么

时间:2019-01-08 14:58:56

标签: python pandas

假设您有一个数据框

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)

但是循环似乎效率低下。有更好的方法吗?

1 个答案:

答案 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