可以使用to_datetime
轉換列yyyymm
,然後創建新Series
(列)與dt.month
和dt.year
。如有必要,最後重塑pivot
並用fillna
替換NaN
至0
。
df['yyyymm'] = pd.to_datetime(df['yyyymm'], format='%Y%m')
df1 = pd.pivot(index=df['yyyymm'].dt.month, columns=df['yyyymm'].dt.year, values=df.visit_cnt)
.fillna(0)
print (df1)
yyyymm 2011 2016
yyyymm
1 91252.0 0.0
2 140571.0 0.0
3 141457.0 0.0
4 147680.0 0.0
5 154066.0 0.0
9 0.0 591242.0
10 0.0 650174.0
11 0.0 507579.0
12 0.0 465218.0
另一種解決方案是類似的,只有set_index
和unstack
重塑:
df['yyyymm'] = pd.to_datetime(df['yyyymm'], format='%Y%m')
df['year'] = df['yyyymm'].dt.year
df['month'] = df['yyyymm'].dt.month
df1 = df.set_index(['month','year'])['visit_cnt'].unstack(fill_value=0)
print (df1)
year 2011 2016
month
1 91252 0
2 140571 0
3 141457 0
4 147680 0
5 154066 0
9 0 591242
10 0 650174
11 0 507579
12 0 465218
最後,使用seaborn.heatmap
:
import seaborn as sns
ax = sns.heatmap(df1)
jezrael - 非常感謝你 – user3571501
高興可以幫助你 - 小副詞冰對未來 - 請添加一些代碼,你嘗試質疑,然後得到沒有downvotes。美好的一天。 – jezrael