如何通过熊猫替换功能传递字典?

时间:2019-02-03 00:55:59

标签: python pandas

您将如何使用字典替换数据框中所有列的值?

下面是一个示例,在此示例中,我尝试将字典传递给replace函数。我有一个脚本,可以根据公司的经理/员工结构生成各种大小的数据框-因此,每个数据框的列数各不相同。

import pandas as pd
import numpy as np

df = pd.DataFrame({'col2': {0: 'a', 1: 2, 2: np.nan}, 'col1': {0: 'w', 1: 1, 2: 2}, 'col3': {0: 'w', 1: 1, 2: 2}, 'col4': {0: 'w', 1: 1, 2: 2}})
di = {1: "A", 2: "B"}
print(df)

df = df.replace({di})
print(df)

下面有一个类似的问题链接,其中该解决方案指定了列名,但是鉴于我要查看的整个数据帧的列名/大小会有所不同,因此我想将replace函数应用于整个列数据框。

Remap values in pandas column with a dict

谢谢!

1 个答案:

答案 0 :(得分:1)

不要将{}放在字典周围-试图将其变成集合,由于字典不能成为集合中的元素,因此会引发错误。而是直接传递字典:

import pandas as pd
import numpy as np

df = pd.DataFrame({'col2': {0: 'a', 1: 2, 2: np.nan}, 'col1': {0: 'w', 1: 1, 2: 2}, 'col3': {0: 'w', 1: 1, 2: 2}, 'col4': {0: 'w', 1: 1, 2: 2}})
di = {1: "A", 2: "B"}
print(df)

df = df.replace(di)
print(df)

输出:

  col1 col2 col3 col4
0    w    a    w    w
1    1    2    1    1
2    2  NaN    2    2
  col1 col2 col3 col4
0    w    a    w    w
1    A    B    A    A
2    B  NaN    B    B