如何用字典键替换列值
How to replace column values with dictionary keys
我有df,
A B
one six
two seven
three level
five one
和一本字典
my_dict={1:"one,two",2:"three,four"}
我想用 my_dict keys() 替换 df.A。
我想要的输出是,
A B
1 six
1 seven
2 level
five one
我尝试了 df.A.replace(my_dict,regex=True)
但它不起作用。
您需要字典理解才能首先将每个值与键分开:
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)
这是通过 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
我有df,
A B
one six
two seven
three level
five one
和一本字典
my_dict={1:"one,two",2:"three,four"}
我想用 my_dict keys() 替换 df.A。
我想要的输出是,
A B
1 six
1 seven
2 level
five one
我尝试了 df.A.replace(my_dict,regex=True)
但它不起作用。
您需要字典理解才能首先将每个值与键分开:
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)
这是通过 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