将没有唯一索引的数据帧与 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 数据帧)

Pandas 将多个数据帧与时间戳索引对齐

有没有一种pythonic方法可以将日期时间上的数据帧与具有不规则日期时间戳的数据对合并

将视频帧与另一个图像python进行比较? [关闭]

将数据帧与时间戳和间隔合并

将 Pandas 数据帧与多索引列和不规则时间戳连接起来