Python 基于条件连接数据集
我有三个数据集,它们的列名称相同,但数据不同Python 基于条件连接数据集,python,pandas,Python,Pandas,我有三个数据集,它们的列名称相同,但数据不同 Dataset 1 Date Full Name Texts Country Read 02/05/2017 Jack Smith Grey ranks... UK True 02/05/2017 Mary Jane Once upon a time France
Dataset 1
Date Full Name Texts Country Read
02/05/2017 Jack Smith Grey ranks... UK True
02/05/2017 Mary Jane Once upon a time France False
...
24/06/2019 Luke Martyn Bottled... USA True
对于另一个数据集2也是如此
Date Full Name Texts Country Read
02/05/2017 Jack Smith The story ... UK True
04/05/2017 Mary Jane She saw ... France False
...
12/03/2019 Chris Martyn From Mexico ... Mexico False
数据集3
Date Full Name Texts Country Read
23/02/2017 Jack Smith They said ... UK True
01/05/2017 Martin O'Connell When I was young ... Ireland True
...
14/07/2018 Laura Cross My family ... Italy True
我想从这些数据集中获得以下信息:
- 唯一/不同的名称,即未包含在一个或多个数据集中的名称(但在这种情况下,我想知道是否可能知道它们包含在/缺少的数据集中)
- 通用名称,即所有三个数据集中或其中两个数据集中的名称(同上)
但是,我需要根据一个条件获取上述信息,例如,当
Read=True
IIUC时,您可以使用concat
和键来列出您的源数据帧,然后只需简单命名聚合groupby
.agg
df = (
pd.concat([df1, df2, df3], keys=["df1", "df2", "df3"])
.reset_index(0)
.rename(columns={"level_0": "key"})
)
df.groupby(['Full Name']).agg(name_occurance=('key','count'),
source=('key',','.join))
name_occurance source
Full Name
Chris Martyn 1 df2
Jack Smith 3 df1,df2,df3
Laura Cross 1 df3
Luke Martyn 1 df1
Martin O'Connell 1 df3
Mary Jane 2 df1,df2
IIUC,您可以使用concat
和键来列出源数据帧,然后只需简单命名聚合groupby
.agg
df = (
pd.concat([df1, df2, df3], keys=["df1", "df2", "df3"])
.reset_index(0)
.rename(columns={"level_0": "key"})
)
df.groupby(['Full Name']).agg(name_occurance=('key','count'),
source=('key',','.join))
name_occurance source
Full Name
Chris Martyn 1 df2
Jack Smith 3 df1,df2,df3
Laura Cross 1 df3
Luke Martyn 1 df1
Martin O'Connell 1 df3
Mary Jane 2 df1,df2
这回答了你的问题吗@新手,我已经看过了,它非常有用。但我想知道如何根据条件加入数据集。这是否回答了您的问题@新手,我已经看过了,它非常有用。但我想知道如何根据条件加入数据集。非常感谢@datanearo。关于条件(Read=True),它已经包含在你的代码中了,还是我应该设置它?@Math你是说df[df['Read']='True'].groupby(['Full Name']).agg(Name_occurrence=('key','count'),source=('key','join))
非常感谢@datanoveler。关于条件(Read=True),它已经包含在你的代码中了,还是我应该设置它?@Math你是说df[df['Read']='True'].groupby(['Full Name']).agg(Name_occurance=('key','count'),source=('key','join))