将可变数据显示为月份和年份

Display variable data as month and year

我有以下代码:

import pandas as pd
import datetime
df=pd.read_csv("https://www.dropbox.com/s/08kuxi50d0xqnfc/demo.csv?dl=1")
df["date"]=pd.to_datetime(df["date"])
df['date'] = df.date.apply(lambda x: datetime.datetime.strftime(x,'%b')) # SHOWS date as MONTH
pvt_enroll=df.pivot_table(index='site', columns="date", values = 'baseline', aggfunc = {'baseline' : 'count'}, fill_value=0, margins=True) # Pivot_Table with enrollment by SITE by MONTH
pvt_enroll.to_csv("pivot_test.csv")
table_enroll_site_month = pd.read_csv('pivot_test.csv', encoding='latin-1')
table_enroll_site_month.rename(columns={'site':'Study Site'}, inplace=True)
table_enroll_site_month


Study Site      Apr     Jul      Jun    May      All
0      A         5.0    0.0     8.0      4.0    17.0
1      B         9.0    0.0     11.0     5.0    25.0
2      C         6.0    1.0     3.0      20.0   30.0
3      D         5.0    0.0     3.0      2.0    10.0
4      E         5.0    0.0     5.0      0.0    10.0
5    All         30.0   1.0     30.0     31.0   92.0

想知道如何: 1.显示月份与年份为 Apr16 Jul16 Jun16 May16 2. 如果没有 运行 这一步 (pvt_enroll.to_csv("pivot_test.csv") 是否可以得到相同的 table?我的意思是,我可以得到相同的结果而不需要保存到 .csv先归档?

我认为通过使用 %b%y 你可以获得 'Apr16' 等格式。 我尝试使用以下代码,但没有保存到 .csv 中。

import pandas as pd
from datetime import datetime

df=pd.read_csv("demo.csv")
df["date"]=pd.to_datetime(df["date"])
df['date'] = df['date'].apply(lambda x: datetime.strftime(x,'%b%y'))
pvt_enroll=df.pivot_table(index='site', columns="date", values = 'baseline', aggfunc = {'baseline' : 'count'}, fill_value=0, margins=True) # Pivot_Table with enrollment by SITE by MONTH
pvt_enroll.reset_index(inplace=True)
pvt_enroll.rename(columns={'site':'Study Site'}, inplace=True)
print(pvt_enroll)

我得到如下输出

date Study Site  Apr16  Jul16  Jun16  May16  All
0             A      5      0      8      4   17
1             B      9      0     11      5   25
2             C      6      1      3     20   30
3             D      5      0      3      2   10
4             E      5      0      5      0   10
5           All     30      1     30     31   92