python - 将 pandas 列值替换为字典值

标签 python pandas dataframe dictionary series

我有一本如下所示的字典

OUTPUT = {'supplier': {0: 'ABCD',
  1: 'DEFG',
  2: 'GHIK',
  3: 'JKL'},
 'region': {0: 'KOREA',
  1: 'AUS/NZ',
  2: 'INDIA',
  3: 'ASEAN',
  4: 'HK / CHINA'}}

ID,supplier,region,subject
1, 0, 3, TEST
2, 1, 2, EXAM
3, 3, 4, VIVA

df = pd.read_clipboard(sep=',')

我想将 supplierregion 列中的值替换为字典中相应的映射值

我尝试了以下

df["supplier"].replace(output) # not works
df['supplier'].map(output) # not works

但这引发了如下错误

AttributeError: 'Series' object has no attribute '_replace_columnwise'

我希望我的输出如下所示

ID,supplier,region,subject
1, ABCD, ASEAN, TEST
2, DEFG, INDIA, EXAM
3, JKL, HK/CHINA, VIVA

最佳答案

您可以在循环中使用map:

for k,v in OUTPUT.items():
    df[k] = df[k].map(v)

或者简单地使用替换 as suggested by @piRSquared :

df = df.replace(OUTPUT)

输出:

   ID supplier      region subject
0   1     ABCD       ASEAN    TEST
1   2     DEFG       INDIA    EXAM
2   3      JKL  HK / CHINA    VIVA

关于python - 将 pandas 列值替换为字典值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71742199/

相关文章:

python - 无法在 Google 计算引擎虚拟机中安装 fbprophet

python - 在不更改编码的情况下在 Python 中将 u"string"转换为 "string"

python - 使用日期 slider 创建 map 以显示值的进展

python - Pandas - 从包含列表的字典中创建只有一行的数据框

dataframe - (Polars)如何通过在另一列中指定的索引从列表中获取元素

python - 多索引 - 获取每个第一个索引的第二个索引的最大值

python - 如何从 Dockerfile 安装 Python 3.7 和 Pip

python - 如何用keras制作3D滤镜

python - Concat 列名称与第一行的数据,Python 3.6 Dataframe

python - 用 pandas 和 numpy 解析冒号分隔的稀疏数据