[英]Pandas dataframe groupby function usage
我有pandas df,我正在其中尝试按'agr_group'
将其'agr_group'
。 'agr_group'
仅是使用diff
和cumsum
函数的agr_signal
的计数。
BeginDate Consecutive EndDate end_price start_price total_return agr_signal agr_group
2018-03-22 14 2018-04-04 0.000838 0.000997 -0.159478 -1 1.0
2018-04-05 2 2018-04-06 0.000738 0.000754 -0.021220 -1 1.0
2018-04-07 2 2018-04-08 0.000769 0.000795 -0.032704 -1 1.0
2018-04-09 3 2018-04-11 0.000721 0.000713 0.011220 0 2.0
2018-04-12 9 2018-04-20 0.004812 0.000876 4.493151 1 3.0
2018-04-21 13 2018-05-03 0.004045 0.004250 -0.048235 -1 4.0
我正在尝试使用以下代码再次将df分组,
df1 = pd.DataFrame({'BeginDate1' : df.groupby('agr_group').BeginDate.first(),
'EndDate1' : df.groupby('agr_group').BeginDate.last(),
'Consecutive1' : df.groupby('agr_group').size(),
'start_price1':df.groupby('agr_group').start_price.first(),
'end_price1':df.groupby('agr_group').start_price.last()}).reset_index(drop=True)
输出是
BeginDate1 Consecutive1 EndDate1 end_price1 start_price1
2018-03-22 3 2018-04-07 0.000795 0.000997
2018-04-09 1 2018-04-09 0.000713 0.000713
2018-04-12 1 2018-04-12 0.000876 0.000876
2018-04-21 1 2018-04-21 0.004250 0.004250
我也想打印agr_signal
有发生,以及曾经在agr_signal1
列:
BeginDate1 Consecutive1 EndDate1 end_price1 start_price1 agr_signal1
----------------------------------------------------------------------------
2018-03-22 3 2018-04-07 0.000795 0.000997 -1
2018-04-09 1 2018-04-09 0.000713 0.000713 0
2018-04-12 1 2018-04-12 0.000876 0.000876 1
2018-04-21 1 2018-04-21 0.004250 0.004250 -1
我认为需要DataFrameGroupBy.agg
用的功能表列的字典,得到MultiIndex
,通过这样必要扁平化map
和最后一个rename
列:
d = {'BeginDate':['first','last', 'size'],
'start_price':['first','last'],
'agr_signal':'first'}
df = df.groupby('agr_group').agg(d)
df.columns = df.columns.map('_'.join)
d = {'BeginDate_first':'BeginDate1',
'BeginDate_last':'EndDate1',
'BeginDate_size':'Consecutive1',
'start_price_first':'start_price1',
'start_price_last':'end_price1',
'agr_signal_first':'agr_signal1'}
df = df.reset_index().rename(columns=d)
print (df)
agr_group BeginDate1 EndDate1 Consecutive1 start_price1 end_price1 \
0 1.0 2018-03-22 2018-04-07 3 0.000997 0.000795
1 2.0 2018-04-09 2018-04-09 1 0.000713 0.000713
2 3.0 2018-04-12 2018-04-12 1 0.000876 0.000876
3 4.0 2018-04-21 2018-04-21 1 0.004250 0.004250
agr_signal1
0 -1
1 0
2 1
3 -1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.