ワイルドカード文字で複数の列を使用して2つのパンダデータフレームをマージしようとしています。ワイルドカードとのマージ
left=pd.DataFrame({'Type':['ABC','ADEC','OOO','DOG','MOT'], 'ID':[22,44,23,21,55]})
right=pd.DataFrame({'Type':['ABC','ADE*','*','DOG'], 'ID':[22,'*','23','2*'], 'Value': [0,1,1,0]})
result=pd.DataFrame({'Type':['ABC','ADEC','OOO','DOG','MOT'], 'ID':[22,44,23,21,55],'Value': [0,1,1,0,'NaN']})
与える:
left
ID Type
0 22 ABC
1 44 ADEC
2 23 OOO
3 21 DOG
4 55 MOT
right
ID Type Value
0 22 ABC 0
1 * ADE* 1
2 23 * 1
3 2* DOG 0
result
ID Type Value
0 22 ABC 0
1 44 ADEC 1
2 23 OOO 1
3 21 DOG 0
4 55 MOT NaN
を私は使用してこれを実現しようとした:
は結果が必要なマージの結果であるデータセット、考えてみましょう
pd.merge(left=left, right=right, left_on=['Type', 'ID'], right_on ['Type','ID'], how='left')
をしかし、結局:
pd.merge(left=left, right=right, left_on=['Type', 'ID'], right_on= ['Type','ID'], how='left')
ID Type Value
0 22 ABC 0.0
1 44 ADEC NaN
2 23 OOO NaN
3 21 DOG NaN
4 55 MOT NaN
ご協力いただきまして誠にありがとうございます。ありがとう!
私はPandasがマージ、ジョインなどでワイルドカードを使用する機能を持っているとは思わない –