簡體   English   中英

如何使用 pandas 中的日期時間列創建 pivot 表

[英]How to create a pivot table using a datetime column in pandas

我有一個日期時間列和值列,我想要 pivot。 目標是為每個月創建一個列,並為每個月創建一個顯示平均值的行。

import pandas as pd
import numpy as np
import calendar

d = dict(enumerate(calendar.month_abbr))

rng = pd.date_range('2019-01-01', periods=365, freq='D')
df= pd.DataFrame({'Date': rng, 'Val': np.random.randint(10, size=365)}) 
df.set_index('Date', inplace=True)

df = df.resample('1M').mean().reset_index()
df['Month'] = df['Date'].apply(lambda x: d[x.month])

df.pivot(columns='Month', values='Val')

output 應該是 12 列 Jan、Feb、Mar 等......和 1 行是每個月的平均值。

請改用 pd.pivot_table :

import pandas as pd
import numpy as np
import calendar

d = dict(enumerate(calendar.month_abbr))

rng = pd.date_range('2019-01-01', periods=365, freq='D')
df= pd.DataFrame({'Date': rng, 'Val': np.random.randint(10, size=365)}) 
df.set_index('Date', inplace=True)

df = df.resample('1M').mean().reset_index()
df['Month'] = df['Date'].apply(lambda x: d[x.month])

pd.pivot_table(data=df,columns='Month', values='Val', aggfunc=np.mean)

output:

Month  Apr       Aug       Dec       Feb       Jan       Jul       Jun  \
Val    3.2  4.419355  4.548387  5.857143  5.322581  4.354839  5.033333   

Month       Mar       May       Nov       Oct  Sep  
Val    4.645161  4.193548  4.966667  3.645161  3.7  

強制df.index全部為0並使用reindex調用您的pivot命令

df.index = [0]*df.index.size    
df_out = df.pivot(columns='Month', values='Val').reindex(columns=df.Month)

或者直接做單線

df_out = (df.set_index(np.array([0]*df.index.size))
            .pivot(columns='Month', values='Val').reindex(columns=df.Month))


Out[88]:
Month       Jan   Feb       Mar       Apr       May  Jun       Jul       Aug  \
0      4.290323  3.75  4.032258  4.033333  4.225806  4.4  4.774194  4.774194

Month  Sep      Oct       Nov       Dec
0      4.6  4.16129  4.233333  3.935484

如果您不想像上面那樣更改df.index ,您可以只使用pivotffillbfilliloc

df_out = (df.pivot(columns='Month', values='Val').ffill().bfill().iloc[[0]]
            .reindex(columns=df.Month))


Out[99]:
Month       Jan   Feb       Mar       Apr       May  Jun       Jul       Aug  \
0      4.290323  3.75  4.032258  4.033333  4.225806  4.4  4.774194  4.774194

Month  Sep      Oct       Nov       Dec
0      4.6  4.16129  4.233333  3.935484

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM