如何创建一个 pandas pivot df 聚合值

How to create a pandas pivot df aggregating on value

我有这个数据框

    date    sym vals
0   2000-01-03  A   1
1   2000-01-04  A   1
2   2000-01-04  A   1
3   2000-01-04  B   2
4   2000-01-04  B   2
5   2000-01-05  B   2
6   2000-01-05  C   3
7   2000-01-05  C   3
8   2000-01-05  C   3

我想要一个看起来像这样的数据透视表 :

sym 2000-01-03  2000-01-04  2000-01-05
A   1.0          1.0         NaN
B   NaN          2.0         2.0
C   NaN          NaN         3.0

但是我下面的代码生成了这样的东西:

date sym    2000-01-03  2000-01-04  2000-01-05
0    A        1.0        1.0         NaN
1    B        NaN        2.0         2.0
2    C        NaN        NaN         3.0

这是我创建 df 和 pivot 的代码:

df = pd.DataFrame({"date": ["2000-01-03", "2000-01-04", "2000-01-04", "2000-01-04", "2000-01-04",
                         "2000-01-05", "2000-01-05", "2000-01-05", "2000-01-05"],
                   "sym": ["A", "A", "A", "B", "B","B", "C", "C", "C"],
                   "vals": [1, 1, 1, 2, 2, 2, 3, 3, 3]
                  })

df_pivot = (pd.pivot_table(df, 
                         values='vals',  
                         index=[ 'sym'], 
                         columns=['date'],
                         aggfunc=np.mean )
          .reset_index()
         )
df_pivot

尝试使用 rename_axis 而不是 reset_index

out = (pd.pivot_table(df, 
                         values='vals',  
                         index=[ 'sym'], 
                         columns=['date'],
                         aggfunc=np.mean ).rename_axis(None,axis=1)
          
         )
     2000-01-03  2000-01-04  2000-01-05
sym                                    
A           1.0         1.0         NaN
B           NaN         2.0         2.0
C           NaN         NaN         3.0