如何使用字典键替换列值

4

我有一个数据框(df),

 A     B
 one   six
 two   seven
 three level
 five  one

和一个字典
my_dict={1:"one,two",2:"three,four"}

我希望您把 df.A 替换为 my_dict 的 keys()。
我的期望输出是:
 A     B
 1     six
 1     seven
 2     level
 five  one

我尝试了 df.A.replace(my_dict,regex=True),但它没有起作用。
2个回答

5
你需要使用字典推导式将每个值分别与键分离:

你需要使用字典推导式将每个值分别与键分离:

my_dict={1:"one,two",2:"three,four"}
d = {k: oldk for oldk, oldv in my_dict.items() for k in oldv.split(',')}
print (d)
{'one': 1, 'three': 2, 'four': 2, 'two': 1}

df.A = df.A.replace(my_dict)

有没有其他方法,而不需要修改字典? - Pyd
@pyd - 不幸的是,我没有其他想法,但我认为不行。 - jezrael
@pyd - 很高兴能够帮助! - jezrael

2

以下是使用 map / fillna 的解决方案:

d = {v_i: k for k, v in my_dict.items() for v_i in v.split(',')}
df['A'] = df['A'].map(d).fillna(df['A'])

#       A      B
# 0     1    six
# 1     1  seven
# 2     2  level
# 3  five    one

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接