python - 合并熊猫中的两个数据框并在合并后将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 获取,就像在所需的数据框中一样。
任何人都可以帮我吗?谢谢
解决方案
首先添加参数suffixes
,merge
然后使用Series.fillna
withDataFrame.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
推荐阅读
- c# - 解析器如何处理泛型类型参数?
- javascript - 当我确实 require('/todoController'); 时,我不断收到此错误。
- java - 在控制器之间传递值时出现 JavaFX LoadException
- java - 奇怪的 Java 变量绑定行为
- javascript - 获取 Json 数组中元素的最后一个索引
- c++ - 使用代码 1 出现分段错误的原因可能是什么?
- c++ - 运算符 << 作为成员函数
- html - 是否有在 HTML 中包含动态内容的本地方法?
- json - 在 django 中将 sql 数据转储到 json 时出错
- pentaho - Pentaho HTTP-client - 从具有两步验证安全性的基本 URL 调用 Web 服务