【发布时间】:2021-10-10 15:41:02
【问题描述】:
我有以下示例数据框
In [1]: df = pd.DataFrame({'Name': {0: 'ahmed',
1: 'ahmed',
2: 'mohamed',
3: 'mohamed',
4: 'hassan',
5: 'ali',
6: 'nice',
7: 'bad'},
'Location': {0: 'A', 1: 'A', 2: 'B', 3: 'B', 4: 'C', 5: 'C', 6: 'D', 7: 'D'},
'Prof': {0: 'doc',
1: 'doc',
2: 'eng',
3: 'doc',
4: 'eng',
5: 'eng',
6: 'doc',
7: 'eng'}})
In [2]: df
Out[2]:
Name Location Prof
0 ahmed A doc
1 ahmed A doc
2 mohamed B eng
3 mohamed B doc
4 hassan C eng
5 ali C eng
6 nice D doc
7 bad D eng
我想添加一个新列Relations,其中将包含职业与姓名和位置组合
我想要这个
In [3]: df
Out[3]:
Name Location Prof relation
0 ahmed A doc 1_to_1
1 mohamed B eng, doc 1_to_M
2 hassan C eng M_to_1
3 ali C eng M_to_1
4 nice D doc M_to_M
5 bad D eng M_to_M
除了Relations 列,我只想要['Prof'] 中的唯一值;
df.groupby(['Name', 'Location'])['Prof'].agg(','.join)
使用上面的代码行导致doc,doc 用于第一条记录,这是我不想要的,我之前无法删除重复项,因为我在原始数据中有许多其他列构成第一行不重复。
【问题讨论】:
-
看看您是否需要从下面的答案中进一步澄清。如果没有更多问题,请接受您选择的答案,让我们知道最适合您需求的任何答案。还请考虑支持对您有帮助的答案(包括您接受的答案)。谢谢!
-
有什么更新吗?如果需要任何澄清,请告诉我们。谢谢!
标签: python pandas dataframe pandas-groupby