python - Python Pandas 分组列而不聚合
问题描述
我有一个包含 3 列的数据框。用户名、电子邮件和会员资格。我想按成员分组。
输入数据框如下所示:
abc1 abc@company.com prod1
abc1 abc@company.com prod2
abc1 abc@company.com prod3
def1 def@company.com prod2
def1 def@company.com prod3
xyz1 xyz@company.com prod1
xyz1 xyz@company.com prod3
xyz1 xyz@company.com prod4
我想要的输出是:
abc1 abc@company.com prod1
prod2
prod3
def1 def@company.com prod2
prod3
xyz1 xyz@company.com prod1
prod3
prod4
我试过了,但如果不使用聚合函数似乎无法解决
这是代码片段:
df = pd.DataFrame(data['Members'])
dn_group = df.groupby(['username','email'])
new_df = dn_group['membership'].agg('value_counts')
print(new_df)
这是我得到的:
username email membership
abc1 abc@company.com prod1 1
prod2 1
prod3 1
def1 def@company.com prod2 1
prod3 1
xyz1 xyz@company.com prod1 1
prod3 1
prod4 1
基本上,我不想得到最后一列的计数。
`
解决方案
这个解决方案怎么样:
import pandas as pd
df = pd.DataFrame({
"username": ['abc1','abc1','abc1','def1','def1','xyz1','xyz1','xyz1'],
"email":['abc@company.com','abc@company.com','abc@company.com','def@company.com','def@company.com','xyz@company.com','xyz@company.com','xyz@company.com'],
'membership':['prod1','prod2','prod3','prod2','prod3','prod1','prod3','prod4'] })
df.groupby(['username','email'], as_index=False).agg(lambda x: set(x))
结果:
username email membership
0 abc1 abc@company.com {prod2, prod3, prod1}
1 def1 def@company.com {prod2, prod3}
2 xyz1 xyz@company.com {prod4, prod3, prod1}
推荐阅读
- html - HTML中Prettyprint字符串中的换行符
- ruby-on-rails - rails 6 设计创建用户和帐户 ActiveModel::UnknownAttributeError(用户的未知属性“帐户”。):
- sql - 如何修复 Access 中的联合命令
- clickhouse - 查找组中出现次数最多的值
- xml - Reg Exp 接受所有单词,但忽略一个单词
- xml - 使用 DOM 解析器进行 Xml 解析,元素来自元素
- javascript - 需要帮助使用具有两个功能的 await 或 Promise
- java - 为什么对象的实例会破坏受保护的逻辑?
- javascript - 如何在使用 aurelia 时使用值转换器或任何其他方法绑定和显示绑定的值
- html - 如何修复环绕屏幕而不是安装的列