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