【发布时间】:2015-05-04 21:25:40
【问题描述】:
我有一个看起来像这样的数据框。
df.head()
Ship Date Cost Amount
0 2010-08-01 4257.23300
1 2010-08-01 9846.94540
2 2010-08-01 35.77764
3 2010-08-01 420.82920
4 2010-08-01 129.49638
我必须每周明智地收集数据:
df['week_num'] = pd.DatetimeIndex(df['Ship Date']).week
x = df.groupby('week_num').sum()
它会生成一个如下所示的数据框:
Cost Amount
week_num
30 3.273473e+06
31 9.715421e+07
32 9.914568e+07
33 9.843721e+07
34 1.065546e+08
35 1.087598e+08
36 8.050456e+07
现在我想添加一个包含星期和年份信息的列来执行此操作:
def my_conc(row):
return str(row['week_num'])+str('2011')
和
x['year_week'] = x.apply(my_conc,axis= 1)
这给了我一条错误消息:
KeyError: ('week_num', u'occurred at index 30')
现在我的问题是
1) 为什么 groupby 函数生成的数据帧看起来有点奇怪,因为它没有 week_num 作为列名?
2)有没有更好的方法来生成带有分组数据的数据框?
3) 如何在上述dataframetemp上使用apply函数?
【问题讨论】:
-
你是怎么
df.groupby('week_num').sum()的?当df没有week_num列时。 -
@JohnGalt ,抱歉我错过了中间步骤。我现在已经添加了。
标签: pandas