分组行和定义列聚合规则
Grouping Rows and Defining Column Aggregating Rules
我希望在 pandas 中合并多行不同的数据类型。我有我的 .groupby()
参数:['ID']
。当按 ['ID']
分组时,列 ['A']
可能会重复值,或者每行的数据会有所不同。列 ['B']
只需通过 .sum()
.
进行聚合
input_df
ID A B
140-1 Apple 3.2
140-1 Pear 5.0
143-2 Plum 1.2
143-2 Plum 2.0
什么是 1) 按 ['ID']
分组的好方法,2) 如果分组后重复显示 ['A']
的值,如果分组后不重复显示 ['A']
的第一个值,和 3) 将列 ['B']
求和到一个新的数据框中?
output_df
ID A B
140-1 Apple 8.2
143-2 Plum 3.2
尝试:
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
我希望在 pandas 中合并多行不同的数据类型。我有我的 .groupby()
参数:['ID']
。当按 ['ID']
分组时,列 ['A']
可能会重复值,或者每行的数据会有所不同。列 ['B']
只需通过 .sum()
.
input_df
ID A B
140-1 Apple 3.2
140-1 Pear 5.0
143-2 Plum 1.2
143-2 Plum 2.0
什么是 1) 按 ['ID']
分组的好方法,2) 如果分组后重复显示 ['A']
的值,如果分组后不重复显示 ['A']
的第一个值,和 3) 将列 ['B']
求和到一个新的数据框中?
output_df
ID A B
140-1 Apple 8.2
143-2 Plum 3.2
尝试:
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