将没有唯一索引的数据帧与 Python 和 Pandas 合并 [重复]
Posted
技术标签:
【中文标题】将没有唯一索引的数据帧与 Python 和 Pandas 合并 [重复]【英文标题】:Merging DataFrames that don't have unique indexes with Python and Pandas [duplicate] 【发布时间】:2018-10-19 17:13:58 【问题描述】:我看到了两个数据框。一个包含不同校园食物类型的学校食物评级。第一个df是学生评分,第二个是老师评分。结果的顺序和df的长度不能保证。也就是说,我需要将两者结合在一起。
import pandas as pd
student_ratings = pd.DataFrame('food': ['chinese', 'mexican', 'american', 'chinese', 'mexican', 'american'],
'campus': [37, 37, 37, 25, 25, 25],
'student_rating': [97, 90, 83, 96, 89, 82])
teacher_ratings = pd.DataFrame('food': ['chinese', 'mexican', 'american', 'chinese', 'mexican', 'american', 'chinese', 'mexican', 'american'],
'campus': [25, 25, 25, 37, 37, 37, 45, 45, 45],
'teacher_rating': [87, 80, 73, 86, 79, 72, 67, 62, 65])
#...
# SOMETHING LIKE WHAT I'M AFTER...
combined_ratings = pd.DataFrame('food': ['chinese', 'mexican', 'american', 'chinese', 'mexican', 'american', 'chinese', 'mexican', 'american'],
'campus': [25, 25, 25, 37, 37, 37, 45, 45, 45],
'student_rating': [96, 89, 82, 97, 90, 83, Nan, NaN, NaN],
'teacher_rating': [87, 80, 73, 86, 79, 72, 67, 62, 65])
我基本上想添加列(可能不止一列),但我需要通过food
AND campus
匹配所有内容
【问题讨论】:
简单合并teacher_ratings.merge(student_ratings,how='outer')
【参考方案1】:
好像你需要一个外部合并:
res = pd.merge(student_ratings, teacher_ratings, how='outer')
print(res)
campus food student_rating teacher_rating
0 37 chinese 97.0 86
1 37 mexican 90.0 79
2 37 american 83.0 72
3 25 chinese 96.0 87
4 25 mexican 89.0 80
5 25 american 82.0 73
6 45 chinese NaN 67
7 45 mexican NaN 62
8 45 american NaN 65
【讨论】:
以上是关于将没有唯一索引的数据帧与 Python 和 Pandas 合并 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
Python pandas:合并两个没有键的表(将 2 个数据帧与广播所有元素相乘;NxN 数据帧)