Pandas 如何在以下数据集上使用groupby

Pandas 如何在以下数据集上使用groupby,pandas,pandas-groupby,Pandas,Pandas Groupby,我有这个数据集 sender team_id receiver John Cena 1 Margaret Genghis Khan 2 Mahathma Mahathma Gandhi 1 John John Doe 2 Genghis Margaret Thatcher 1 John 每个发送者都有一个团队id,接收者的

我有这个数据集

sender          team_id     receiver
John Cena         1           Margaret
Genghis Khan      2           Mahathma
Mahathma Gandhi   1           John
John Doe          2           Genghis
Margaret Thatcher 1           John
每个发送者都有一个团队id,接收者的名字只是他们的名字。我想知道每条消息是否在团队成员之间。结果会像这样

sender          team_id     receiver       btwn_teammates
John Cena         1           Margaret          Yes
Genghis Khan      2           Mahathma          No
Mahathma Gandhi   1           John              Yes
John Doe          2           Genghis           Yes
Margaret Thatcher 1           John              Yes

合并名称+团队id的第一部分,然后映射指标值:

df2 = df[['sender', 'team_id']].rename(columns={'sender': 'receiver'})
df2['receiver'] = df2.receiver.str.split().str[0]
df2 = df2.drop_duplicates()  # So left merge preserves size.

df = df.merge(df2, how='left', indicator='btwn_team')
df['btwn_team'] = df.btwn_team.map({'both': 'Yes', 'left_only': 'No'})
输出:

              sender  team_id  receiver btwn_team
0          John Cena        1  Margaret       Yes
1       Genghis Khan        2  Mahathma        No
2    Mahathma Gandhi        1      John       Yes
3           John Doe        2   Genghis       Yes
4  Margaret Thatcher        1      John       Yes

您如何解决发送到
John
(可能是
John Cena
John Doe
)的歧义?在最后一行中,提供了
John Cena
的全名,违反了
接收者
只包含第一个名字的假设。一般来说,什么系统只记录收件人的名字,你能改为记录他们的全名吗?John Doe和Ghengis应该是吗?很抱歉。数据集已经存在,我无法更改它。团队中最多有10人。一个团队中没有两个名字相同的人。它不需要100%准确。只要它离结果表足够近,就完全可以了。@Lollz是的。你是对的。我的bad@Peter莱姆比格勒。约翰·塞纳是我的错。刚刚修好了。我猜成功的人并没有想清楚这一点。这是我唯一拥有的东西,我不能改变它。