透视数据框

问题描述 投票:0回答:1

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

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值?

pandas dataframe
1个回答
0
投票

如果您只想在工作日使用箱形图,则无需转动。只需调用boxplot:

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

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.