首页 > 解决方案 > 合并熊猫中的两个数据框并在合并后将column_x与column_y合并

问题描述

第一个数据框:(名称只有名字)

df_Math
Date        RollNo  Name    Math_Score
2019-01-01  1       A       45
2019-01-01  2       B       60
2019-02-01  1       A       70

第二个数据框:(名称有名字和姓氏)

df_Science
Date        RollNo  Name    Science_Score
2019-01-01  1       A A     50
2019-01-01  3       C C     80
2019-02-01  2       B B     90

所需数据框:

Date        RollNo  Name    Science_Score   Math_Score
2019-01-01      1   A       50              45
2019-01-01      2   B       NaN             60
2019-01-01      3   C C     80              NaN
2019-02-01      1   A       NaN             70
2019-02-01      2   B B     90              NaN

合并语句:df_Math.merge(df_Science, on=['Date', 'RollNo'], how='outer')给出结果,但它包含 Name_x 和 Name_y。我只需要一个 Name 列,它应该从 df_Math 获取,如果它是 NaN,它应该从 df_Science 获取,就像在所需的数据框中一样。

任何人都可以帮我吗?谢谢

标签: pythonpandasdataframemerge

解决方案


首先添加参数suffixesmerge然后使用Series.fillnawithDataFrame.pop提取列Name_

df = df_Math.merge(df_Science, on=['Date', 'RollNo'], how='outer', suffixes=('','_'))
df['Name'] = df['Name'].fillna(df.pop('Name_'))
print (df)
         Date  RollNo Name  Math_Score  Science_Score
0  2019-01-01       1    A        45.0           50.0
1  2019-01-01       2    B        60.0            NaN
2  2019-02-01       1    A        70.0            NaN
3  2019-01-01       3  C C         NaN           80.0
4  2019-02-01       2  B B         NaN           90.0

推荐阅读