給定 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 中,我需要使用對應表的 DF2 替換所有值 A、B、C。關鍵點是在某些行中,有多個值要替換:例如在第一行中的 ['A, B']。
我嘗試了 3 種方法:1- 拆分 Col_Name_1 以將每個值放在單獨的列中并使用合并函式回圈 2- 從 DF2 創建一個字典并在 DF1 上使用替換功能 3- 從 DF2 創建一個字典并在 DF2 上使用 map 函式
我的問題是我的 DataFrames 有 1 000 000 行。1 和 2 消耗太多記憶體、CPU 和時間。我無法得到結果。3 很快,但不匹配來自 DF1 的多個值:A,B 回傳 NaN
我認為它必須存在一種簡單的方法來做到這一點......知道嗎?
謝謝
uj5u.com熱心網友回復:
在df1with列中使用帶有拆分值的字典映射dict.get,如果沒有匹配回傳相同的值:
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
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/366897.html
上一篇:通過坐標在字典中查找值
