我有一个数据集,其中有多个列,其名称为日期。一个例子在这里:
df = pd.DataFrame({'company': ['dell', 'microsoft', 'toshiba', 'apple'],
'measure': ['sales', 'speed', 'wait time', 'service'],
'category': ['laptop', 'tablet', 'smartphone', 'desktop'],
'10/6/2015': [234, 333, 456, 290],
'10/13/2015': [134, 154, 123, 177],
'10/20/2015': [57, 57, 63, 71]})
我想计算平均每月。因此,对于上面的例子,我想所期望的结果是:
company measure category 201510
0 dell sales laptop 141.66
1 microsoft speed tablet 181.33
2 toshiba wait time smartphone 214.00
3 apple service desktop 179.33
201510
是df
中三个日期列的平均值。是否可以使用groupby
处理多个日期列?任何帮助将不胜感激,当涉及到python时,我是一个完整的newby。我应该使用的时间序列的方法或者是有一个简单的方法通过执行此pandas
?
答案 0 :(得分:3)
使用filter
like
过滤列,然后将列转换为datetime
并使用groupby
s=df.filter(like='/')
s.columns=pd.to_datetime(s.columns).strftime('%Y-%m')
pd.concat([df,s.groupby(level=0,axis=1).mean()],axis=1)
Out[229]:
company measure ... 10/20/2015 2015-10
0 dell sales ... 57 141.666667
1 microsoft speed ... 57 181.333333
2 toshiba wait time ... 63 214.000000
3 apple service ... 71 179.333333
[4 rows x 7 columns]