我希望根据工作日对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个 元素“
我得到的图是这样的:
答案 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