Python数据帧聚合输出
我有这样的数据:Python数据帧聚合输出,python,pandas,Python,Pandas,我有这样的数据: Sr.No Value1 Value2 Value3 Type 1 2 1 N A 2 3 1 M A 3 3 2 X A 4 0 1 Y B 5 10 2 Z B 6 3 4 J A
Sr.No Value1 Value2 Value3 Type
1 2 1 N A
2 3 1 M A
3 3 2 X A
4 0 1 Y B
5 10 2 Z B
6 3 4 J A
7 5 6 K A
如何使用Python生成这样的输出
Sr.No Value1 Value2 Value3 Type
1 8 4 N,M,X A
2 10 3 X,Y B
3 8 10 Z,J,K A
基本上,我在寻找基于连续值1、值2和类型的分组。
我怎样才能做到这一点
我用这段代码进行了尝试,但它没有返回所需的输出
grpbook = pandabook.groupby(['Value1','Value2','Type']).agg({'Value1': 'sum','Value2': 'sum', 'Value3': lambda ind: ','.join(ind) })
类型值A根据索引和顺序分为两组。您可以从cumsum开始生成伪组id:
并使用它将df划分为多个组:
df = df.groupby(["group_id", "Type"]).sum().reset_index().drop("group_id", 1)
df["Sr.No"] = df.index+1
print(df)
Type Sr.No Value1 Value2
0 A 1 8 4
1 B 2 10 3
2 A 3 8 10
好的,我也会添加我的代码。我已经编辑并添加了我目前正在做的代码。A被分为两组。这是因为行索引分组吗?是的,这是基于序列/索引。优秀的Chris+1而不是cumsum I位于查找边界上。顺便说一句,这一个相对来说比形成边界要好。克里斯,我改变了一个问题,因为你们当前的求和方法对我不起作用。请检查问题。好的,我想知道是否有更有效的方法来解决更新后的问题。我能想到的唯一方法是显式地循环帧中的行@克里斯的回答肯定对你原来的问题很有效。@meW总是很高兴被表扬:谢谢@AhsanMukhtar很高兴为您提供帮助:
df = df.groupby(["group_id", "Type"]).sum().reset_index().drop("group_id", 1)
df["Sr.No"] = df.index+1
print(df)
Type Sr.No Value1 Value2
0 A 1 8 4
1 B 2 10 3
2 A 3 8 10