python groupby plot的长度不匹配错误

时间:2018-02-12 11:39:19

标签: python pandas plot group-by

我希望根据工作日对df1中某列的平均值进行分组。根据特定列值从另一个df过滤df1。第一个数据框包含不同平面类型的劳动力数据。我为平面类型过滤df1,然后每周绘制劳动力数据的平均值。以下是代码:

df1 = df[df['Aircraft'].str.contains('SB_A330')]

weekday = df1['Labor_Hrs'].groupby(df1.index.dayofweek).mean()

weekday.index = ['Mon', 'Tues', 'Wed', 'Thurs', 'Fri', 'Sat', 'Sun']

weekday.plot(style=['-'])

此代码仅适用于某些类别,我发现其中一些类别的长度不匹配错误。例如如果有飞机类别'A','B','C'和'D',它适用于'A'和'另一个'B'我得到以下错误:

  

“长度不匹配:预期的轴有1个元素,新值有7个   元素“或

     

“长度不匹配:预期轴有3个元素,新值有7个   元素“

我得到的图是这样的: plot for category A

1 个答案:

答案 0 :(得分:1)

您需要reindex来为Series添加长度为7的遗失日期:

weekday=df1['Labor_Hrs'].groupby(df1.index.dayofweek).mean().reindex(range(7), fill_value=0)

<强>示例

rng = pd.date_range('2017-04-03', periods=6, freq='59H')
df1 = pd.DataFrame({'Labor_Hrs': range(6)}, index=rng)  
print (df1)
                     Labor_Hrs
2017-04-03 00:00:00          0
2017-04-05 11:00:00          1
2017-04-07 22:00:00          2
2017-04-10 09:00:00          3
2017-04-12 20:00:00          4
2017-04-15 07:00:00          5

weekday=df1['Labor_Hrs'].groupby(df1.index.dayofweek).mean().reindex(range(7), fill_value=0)
weekday.index = ['Mon', 'Tues', 'Wed', 'Thurs', 'Fri', 'Sat', 'Sun']

print (weekday)
Mon      1.5
Tues     0.0 <-added 0 for missing 
Wed      2.5
Thurs    0.0 <-added 0 for missing 
Fri      2.0
Sat      5.0
Sun      0.0 <-added 0 for missing 
Name: Labor_Hrs, dtype: float64