加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 如何使用pandas isin用于多个列

发布时间:2020-12-20 12:01:58 所属栏目:Python 来源:网络整理
导读:我想找到col1和col2的值,其中第一个数据帧的col1和col2都在第二个数据帧中. 这些行应该在结果数据框中: 披萨,男孩 披萨,女孩 冰淇淋,男孩 因为所有三行都在第一个和第二个数据帧中. 我怎么可能做到这一点?我正在考虑使用isin,但是当我不得不考虑多个列时,

enter image description here

enter image description here

enter image description here

我想找到col1和col2的值,其中第一个数据帧的col1和col2都在第二个数据帧中.

这些行应该在结果数据框中:

>披萨,男孩
>披萨,女孩
>冰淇淋,男孩

因为所有三行都在第一个和第二个数据帧中.

我怎么可能做到这一点?我正在考虑使用isin,但是当我不得不考虑多个列时,我不确定如何使用它.

解决方法

在col1和col2上执行 inner merge:

import pandas as pd
df1 = pd.DataFrame({'col1': ['pizza','hamburger','pizza','ice cream'],'col2': ['boy','boy','girl','boy']},index=range(1,6))
df2 = pd.DataFrame({'col1': ['pizza','chicken','cake',index=range(10,17))

print(pd.merge(df2.reset_index(),df1,how='inner').set_index('index'))

产量

col1  col2
index                 
10         pizza   boy
11         pizza  girl
16     ice cream   boy

reset_index和set_index调用的目的是保留df2的索引,就像您发布的所需结果一样.如果索引不重要,那么

pd.merge(df2,how='inner')
#         col1  col2
# 0      pizza   boy
# 1      pizza  girl
# 2  ice cream   boy

就够了

或者,您可以在col1和col2列中构造MultiIndexs,然后调用MultiIndex.isin method:

index1 = pd.MultiIndex.from_arrays([df1[col] for col in ['col1','col2']])
index2 = pd.MultiIndex.from_arrays([df2[col] for col in ['col1','col2']])
print(df2.loc[index2.isin(index1)])

产量

col1  col2
10      pizza   boy
11      pizza  girl
16  ice cream   boy

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读