使用Pandas TimeGrouper时,在列上改变应用函数

时间:2017-06-26 00:23:32

标签: pandas pandas-groupby

我有一个非常大的时间序列数据集,我想在close_p上做一个count()而在prd_vlm上做一个sum()。

                      open_p   high_p    low_p  close_p  tot_vlm  prd_vlm
datetime                                                                 
2005-09-06 16:33:00  1234.25  1234.50  1234.25  1234.25      776       98
2005-09-06 16:34:00  1234.50  1234.75  1234.25  1234.50     1199      423
2005-09-06 16:35:00  1234.50  1234.50  1234.25  1234.50     1330      131
...
2017-06-25 18:41:00  2431.75  2432.00  2431.75  2432.00     5436      189
2017-06-25 18:42:00  2431.75  2432.25  2431.75  2432.25     5654      218
2017-06-25 18:43:00  2432.25  2432.75  2432.25  2432.75     5877      223
2017-06-25 18:44:00  2432.75  2432.75  2432.50  2432.75     5894       17
2017-06-25 18:45:00  2432.50  2432.50  2432.25  2432.25     6098      204

我可以使用以下代码实现此目的。但是想知道是否有更好的方法来实现这个使用应用函数

group_count = df['close_p'].groupby(pd.TimeGrouper('D')).count()
group_volume = df['prd_vlm'].groupby(pd.TimeGrouper('D')).sum()
grouped = pd.concat([group_count,group_volume], axis=1)
print(grouped)

            close_p    prd_vlm
datetime                      
2005-09-06      232     4776.0
2005-09-07     1039   631548.0
2005-09-08      999   544112.0
2005-09-09      810   595044.0

1 个答案:

答案 0 :(得分:2)

您可以使用agg并将不同的函数应用于不同的列。

df.groupby(pd.TimeGrouper('D')).agg({'close_p':'count','prd_vlm':'sum'})