我有两个这样的数据集:
数据集1:
Name | Age
John | 22
Bill | 19
Jess | 21
数据集2:
Name | Age
Tati | 29
Dray | 18
John | 24
我想比较两个数据集的两列“名称”并获取输出:“约翰”,因为这是两列中的重复名称。
到目前为止我拥有的代码:
import pandas as pd
first_df = pd.read_excel("dataset1.xlsx")
second_df = pd.read_excel("dataset2.xlsx")
first_df['Name'].isin(second_df['Name']).value_counts()
输出为:
False: 2
True: 1
但是我想看看哪个是重复的名字。
答案 0 :(得分:2)
一种方法是在Name
上依次使用isin
和value_counts
:
df1.loc[df1.Name.isin(df2.Name), 'Name'].value_counts()
John 1
Name: Name, dtype: int64
如果不需要计数,则更简单的方法是:
set(first_df.Name).intersection(second_df.Name)
# {'John'}
答案 1 :(得分:1)
yatu给出了一个很好的答案,但我只想向您展示您实际上有多近:
multiple_occurrences = first_df["Name"].isin(second_df["Name"])
first_df[multiple_occurrences]
最后一行的结果:
Name Age
0 John 22
或者如果您只想使用名称:
multiple_occurrences = first_df["Name"].isin(second_df["Name"])
list(first_df[multiple_occurrences]["Name"])
最后一行的结果:
['John']