假设我有一个 pandas 交易数据框,如下所示:
+----------+----------+----------+---------+
| Owner | Seller | Mediator | Buyer |
+----------+----------+----------+---------+
| 'andrew' | 'bob' | 'tom' | 'john' |
| 'andrew' | 'andrew' | 'bill' | 'jason' |
| 'andrew' | 'bill' | 'bill' | 'tom' |
+----------+----------+----------+---------+
我想执行一个奇怪的分组 - 我想根据交易中的任何参与情况按人员姓名进行分组。所以输出将是:
+----------+-------+
| Name | Count |
+----------+-------+
| 'andrew' | 3 |
| 'bob' | 1 |
| 'tom' | 2 |
| 'john' | 1 |
| 'bill' | 2 |
| 'jason' | 1 |
+----------+-------+
即,“andrew”的计数为 3,因为他的名字出现在 3 笔交易中,“john”的计数为 1,因为他只出现在 1 笔交易中,等等。
执行此操作有什么建议吗?提前致谢
最佳答案
您可以使用 unstack() 至:
- 将所有名称放入一列
- groupby
名称
并计数唯一原始索引
,即>level_1
在unstack()
和reset_index()
之后:
(df.unstack()
.reset_index(name='Name')
.groupby('Name')
.level_1
.nunique()
.rename('Count')
.reset_index())
#Out[xx]:
# Name Count
#0 andrew 3
#1 bill 2
#2 bob 1
#3 jason 1
#4 john 1
#5 tom 2
关于python - pandas 数据框按特定值分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59002043/