首页 > 解决方案 > 为某些名称创建具有每天平均值的列

问题描述

我有一个 data.frame,其中包含每天的不同名称和评级,看起来类似于那个小例子:

df1 = pd.DataFrame({
    'Date':['2021-01-01', '2021-01-01', '2021-01-01', '2021-01-02', '2021-01-02', '2021-01-02', '2021-01-02', '2021-01-03'],
    'Name':['Tim, Max', 'Tim', 'Max, Ben', 'Ben, Tim', 'Max', 'Tim, Max, Ben', 'Claude', 'Max, Bob'], 
    'Ratings':[9.0, 8.0, 5.0, 3.0, 2, 3, 2, 5]})

我尝试创建一个新的 data.frame,其中包含以下名称的列:Tim、Max 和 Ben,其中包含每天的平均收视率。

names = ['Tim', 'Max', 'Ben']
df2 = pd.DataFrame({
    'Date':['2021-01-01', '2021-01-02', '2021-01-03'],
    'Tim':[8.5, 3, 'NA'],
    'Max':[7, 2.5, 5],
    'Ben':[5, 3, 'NA']})

我用数据透视表尝试了它,但我为每个唯一的“名称”列条目获得了一个列,但我需要它来分别汇总和分开的名称 Tim、Max 和 Ben。

df1.pivot_table(
        values='Ratings', index='Date', columns='Name',
        fill_value=0, aggfunc='mean')

非常感谢您的帮助!

标签: pythonpandas

解决方案


推荐阅读