首页 > 解决方案 > 数据框。按日期将列拆分为其他列

问题描述

有一个数据框:

d = {'date' : ['2020-02-01', '2020-02-01', '2020-02-01', '2020-02-01', '2020-02-02', '2020-02-02', '2020-02-02'], 'type' : ['Bird', 'Dog', 'Cat', 'Bird', 'Dog', 'Cat', 'Bird'], 'weight' :  [1, 2, 3, 4, 5, 6, 7]}
df = pd.DataFrame(d)

我想按类型的值拆分“类型”列并获取列 - 鸟、狗、猫。并且这些列中的值必须是同一天的鸟、狗等的平均重量。

得到这样的东西。

date        bird     dog      cat
2020-02-01  ...      ...      ...
2020-02-02  ...      ...      ...

我开始尝试分组,但无法弄清楚。也许在“类型”列中按 val 拆分数据帧并再次合并获得的数据帧?

标签: pandasdataframe

解决方案


使用pivot_table并应用于mean具有相同索引/列的聚合值:

out = df.pivot_table(index='date', columns='type', values='weight', aggfunc='mean') \
        .rename_axis(columns=None).reset_index()
print(out)

# Output:
         date  Bird  Cat  Dog
0  2020-02-01   2.5  3.0  2.0
1  2020-02-02   7.0  6.0  5.0

推荐阅读