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莱姆比格勒。约翰·塞纳是我的错。刚刚修好了。我猜成功的人并没有想清楚这一点。这是我唯一拥有的东西,我不能改变它。