旋转数据框

时间:2019-04-12 20:29:20

标签: pandas dataframe

如何枢转以下数据框,以便每个工作日都有一列?

import numpy as np
import pandas as pd

idx = pd.date_range('2018-01', '2018-12', name='date')
df = pd.DataFrame(np.random.random(len(idx)), index=idx, columns=['value'])
df['weekday'] = idx.weekday

我尝试了以下方法,尽管每个工作日只有一列,但是有许多NaN值。这是因为数据透视表的索引由数据透视表使用。

pivoted = df.pivot(columns='weekday', values='value')
pivoted.head()
# weekday            0         1         2       3         4   5   6
# date                                                              
# 2018-01-01  0.638018       NaN       NaN     NaN       NaN NaN NaN
# 2018-01-02       NaN  0.179721       NaN     NaN       NaN NaN NaN
# 2018-01-03       NaN       NaN  0.713559     NaN       NaN NaN NaN
# 2018-01-04       NaN       NaN       NaN  0.2092       NaN NaN NaN
# 2018-01-05       NaN       NaN       NaN     NaN  0.679759 NaN NaN

最终,我想要每个工作日的值的箱形图。由于NaN的值将被忽略,因此可以进行以下操作。

pivoted.plot.box()

当然,有一种方法不涉及很多NaN值吗?

1 个答案:

答案 0 :(得分:0)

如果您只想在工作日之前绘制箱线图,则无需进行透视。只需调用boxplot:

df.boxplot(column='value', by='weekday')

enter image description here