【问题标题】:Merging DataFrames that don't have unique indexes with Python and Pandas [duplicate]将没有唯一索引的数据帧与 Python 和 Pandas 合并 [重复]
【发布时间】: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')

标签: python pandas


【解决方案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

【讨论】:

    猜你喜欢
    • 2021-01-10
    • 1970-01-01
    • 2015-02-10
    • 1970-01-01
    • 2015-06-21
    • 1970-01-01
    • 2013-04-06
    • 1970-01-01
    相关资源
    最近更新 更多