Python 对行进行分组并定义列聚合规则
我希望在pandas中整合多行不同的数据类型。我有我的Python 对行进行分组并定义列聚合规则,python,pandas,duplicates,aggregate,pandas-groupby,Python,Pandas,Duplicates,Aggregate,Pandas Groupby,我希望在pandas中整合多行不同的数据类型。我有我的.groupby()参数:['ID']。列['A']按['ID']分组时可能重复值,或者每行的数据不同。列['B']只需通过.sum()聚合即可 1)按['ID']分组,2)分组后重复显示['a']的值,分组后不重复显示['a']的第一个值,以及3)将列['B']求和到新的数据帧中,有什么好方法 output_df ID A B 140-1 Apple 8.2 143-2 Plum
.groupby()
参数:['ID']
。列['A']
按['ID']
分组时可能重复值,或者每行的数据不同。列['B']
只需通过.sum()
聚合即可
1)按['ID']
分组,2)分组后重复显示['a']
的值,分组后不重复显示['a']
的第一个值,以及3)将列['B']
求和到新的数据帧中,有什么好方法
output_df
ID A B
140-1 Apple 8.2
143-2 Plum 3.2
尝试:
你可以试试
df.groupby('ID').agg({'A': lambda x: x.unique()[0], 'B': 'sum'}).reset_index()
ID A B
0 140-1 Apple 8.2
1 143-2 Plum 3.2
您的代码看起来可以在任何其他数据帧上工作。出于某种原因,我抛出了'TypeError:'Series'对象是可变的,因此它们不能在我的实际工作数据帧上进行哈希运算。你能试试这个吗?agg({'A':'first','B':'sum'}).reset_index()我弄明白了…我调用列的方式不正确。谢谢你的帮助!
input_df.groupby('ID').apply(lambda f: pd.DataFrame({'A': f.A.head(1), 'B': f.B.sum()})).reset_index(level=0)
# ID A B
# 0 140-1 Apple 8.2
# 2 143-2 Plum 3.2
df.groupby('ID').agg({'A': lambda x: x.unique()[0], 'B': 'sum'}).reset_index()
ID A B
0 140-1 Apple 8.2
1 143-2 Plum 3.2