【发布时间】:2021-03-09 17:05:13
【问题描述】:
如何在 DataFrame 上使用 groupby 和 mean,同时保留所有非数字列?
示例:
ID label_1 label_2 label_3 label_4
0 1 0.582152 13 A False
1 1 0.177475 3 A False
2 2 0.263141 13 B True
3 2 0.630196 3 B True
预期输出:
ID label_1 label_2 label_3 label_4
0 1 0.379814 8.0 A False
1 2 0.446669 8.0 B True
有什么简单的方法吗?我可以在this answer 之后得到我想要的结果,但它按所有非数字列分组,并且不保持原始列顺序。我想按“ID”对数据进行分组并获取所有数字列的平均值,保留所有其他非数字列。这是我的代码:
# Group data and get mean
data = data.groupby(list(data.select_dtypes(exclude=np.number))).agg(np.mean).reset_index()
# Reordering the columns to the original order
data = data[[*data.select_dtypes(include=np.number).columns,
*data.select_dtypes(exclude=np.number).columns]]
【问题讨论】: