首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >比较两个数据帧中公共行的pandas数据帧

比较两个数据帧中公共行的pandas数据帧
EN

Stack Overflow用户
提问于 2016-07-23 22:04:46
回答 2查看 4.6K关注 0票数 6

我有两个像这样的数据帧df-1和df-2,

代码语言:javascript
复制
import pandas as pd

raw_data = {'company': ['comp1', 'comp1', 'comp1', 'comp1', 'comp2', 'comp2', 'comp2', 'comp2', 'comp3', 'comp3', 'comp3', 'comp3'], 
        'region': ['1st', '1st', '2nd', '2nd', '1st', '1st', '2nd', '2nd','1st', '1st', '2nd', '2nd'], 
        'name': ['John', 'Jake', 'Alice', 'Mathew', 'Mark', 'Jacon', 'Ryan', 'Sone', 'Steve', 'Rooke', 'Rani', 'Alice'], 
        'preTestScore': [4, 24, 31, 2, 3, 4, 24, 31, 2, 3, 2, 3],
        'postTestScore': [25, 94, 57, 62, 70, 25, 94, 57, 62, 70, 62, 70]}
df1 = pd.DataFrame(raw_data, columns = ['company', 'region', 'name', 'preTestScore'])
print df1


raw_data = {'company': [ 'comp1', 'comp1', 'comp2', 'comp2', 'comp2', 'comp2', 'comp3', 'comp3', 'comp3'], 
        'region': [ '2nd', '2nd', '1st', '1st', '2nd', '2nd','1st', '1st', '2nd'], 
        'name': [ 'Alice', 'Mathew', 'Mark', 'Jacon', 'Ryan', 'Sone', 'Steve', 'Rooke', 'Rani', ], 
        'status': [ 'great', 'average', 'average', 'average', 'good', 'great', 'average', 'average', 'average']}
df2 = pd.DataFrame(raw_data, columns = ['company', 'region', 'name', 'status'])
print df2

如何在与df-2相同的df-1中找到公司、地区、名称行。换句话说,如何找到所有三列组合的内连接。

EN

回答 2

Stack Overflow用户

发布于 2016-07-23 22:20:30

这取决于你所说的是什么意思

与df-2相同的df-1中的

行。

因为列是不相同的。

如果您指的是列的交叉点具有相同值的行,则可以执行inner join user merge

代码语言:javascript
复制
In [13]: pd.merge(df1, df2, how='inner')
Out[13]: 
  company region    name  preTestScore   status
0   comp1    2nd   Alice            31    great
1   comp1    2nd  Mathew             2  average
2   comp2    1st    Mark             3  average
3   comp2    1st   Jacon             4  average
4   comp2    2nd    Ryan            24     good
5   comp2    2nd    Sone            31    great
6   comp3    1st   Steve             2  average
7   comp3    1st   Rooke             3  average
8   comp3    2nd    Rani             2  average

编辑

如果希望对连接列进行更好的控制,可以使用merge函数的onleft_onright_on参数。如果不这样做,pandas将假定您指的是两个数据帧的列的交集。

票数 4
EN

Stack Overflow用户

发布于 2016-07-23 22:37:04

代码语言:javascript
复制
result = pd.merge(df1,df2, on=['company','region','region'],how="left")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38542645

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档