DataFrame 替换列中的多个键
DataFrame replace multiple keys in a column
给定 2 个数据帧:
DF1(意甲):
Col_Name_1
[['A, B']
['B']
['A, C']
['B, C']]
DF2 :
Col_Name_X, Col_Name_Y
[['A', 'Paris']
['B', 'London']
['C', 'Mexico']]
在 DF1 中,我需要使用对应 table 的 DF2 替换所有值 A、B、C。 关键点是在某些行中,有多个值要替换:例如第一行中的 ['A, B']。
我尝试了 3 种方法: 1- split Col_Name_1 将每个值放在单独的列中并使用合并功能循环 2-从 DF2 创建字典并在 DF1 上使用替换功能 3- 从 DF2 创建字典并在 DF2
上使用映射函数我遇到的问题是我的 DataFrame 有 1 000 000 行。 1 和 2 消耗了太多内存、CPU 和时间。我得不到结果。 3 很快但不匹配来自 DF1 的多个值:A, B return NaN
我认为它一定存在一种简单的方法来做到这一点...请问有什么想法吗?
谢谢
使用字典映射,在 df1
和 dict.get
中的列中拆分值,如果没有匹配 return 相同的值:
d = df2.set_index('Col_Name_X')['Col_Name_Y'].to_dict()
f = lambda x: ', '.join(d.get(y,y) for y in x.split(', '))
df1['Col_Name_1'] = df1['Col_Name_1'].apply(f)
print (df1)
Col_Name_1
0 Paris, London
1 London
2 Paris, Mexico
3 London, Mexico