Python 熊猫将多个数据帧与存储在多个列上的查找值合并
我想合并两个数据帧,其中查找值存储在多个列上Python 熊猫将多个数据帧与存储在多个列上的查找值合并,python,pandas,dataframe,merge,left-join,Python,Pandas,Dataframe,Merge,Left Join,我想合并两个数据帧,其中查找值存储在多个列上 import pandas as pd import numpy as np d1 = {'CODE': ['BBLGLC70M',np.nan, np.nan, np.nan, np.nan], 'CODE1': [np.nan, np.nan, np.nan, 'AALGLC71P', np.nan], 'CODE2': ['BBLG', np.nan, 'ZZTNRD77', 'PRI', np.nan],
import pandas as pd
import numpy as np
d1 = {'CODE': ['BBLGLC70M',np.nan, np.nan, np.nan, np.nan],
'CODE1': [np.nan, np.nan, np.nan, 'AALGLC71P', np.nan],
'CODE2': ['BBLG', np.nan, 'ZZTNRD77', 'PRI', np.nan],
'DESC': ['OK', 'FALSE', 'YES', 'OK', 'NO']
}
df1 = pd.DataFrame(df1)
df1
df = {'NUMBER': ['BBLGLC70M', 'AALGLC71P', 'ZZTNRD77']
}
df = pd.DataFrame(df1)
df
我编写的代码在所有字段中输出NaN:
merged = pd.merge(df, df1, how='left', left_on=['NUMBER', 'NUMBER', 'NUMBER'], right_on=['CODE', 'CODE1', 'CODE2'])
merged
我希望看到填充了所有文件,例如我希望的第一行:
您需要逐个合并所有列,并合并所有这些数据帧:
res_df = pd.DataFrame()
for col in df1.columns:
temp_df = df.merge(df1, left_on=['NUMBER'], right_on=[col], how='inner')
res_df = pd.concat([res_df, temp_df], axis=0)
print(res_df)
输出:
NUMBER CODE CODE1 CODE2 DESC
0 BBLGLC70M BBLGLC70M NaN BBLG OK
0 AALGLC71P NaN AALGLC71P PRI OK
0 ZZTNRD77 NaN NaN ZZTNRD77 YES