我有一个大型DF,其结构如下。它具有多个处于0级的股票,并且日期处于1级。从2004年12月31日开始每月的数据,直到2017年12月31日(未显示)。
Date DAILY_RETURN
A 12/31/2004 NaN
1/31/2005 -8.26
2/28/2005 8.55
3/31/2005 -7.5
4/29/2005 -6.53
5/31/2005 15.71
6/30/2005 -4.12
7/29/2005 13.99
8/31/2005 22.56
9/30/2005 1.83
10/31/2005 -2.26
11/30/2005 11.4
12/30/2005 -6.65
1/31/2006 1.86
2/28/2006 6.16
3/31/2006 4.31
我想做的是按月份分组,然后按月份对Daily_returns中的POSITIVE回报数进行计数(即从索引的Date部分开始依次为01、02、03等)。该代码将为我提供计数,但仅按索引级别= 0进行。
df3.groupby(level=0)['DAILY_RETURN'].agg(['count'])
还有其他问题,这个问题最接近,但是我无法使代码正常工作。有人可以帮忙吗?最终,我想做的是分组股票,然后按月过滤所有月度收益至少达到70%的股票。我似乎也无法弄清楚如何从数据框中获得正收益
答案 0 :(得分:0)
这里是使用datetime
的较小数据import pandas as pd
from datetime import datetime
df = pd.DataFrame()
df['Date'] = ['12/31/2004', '1/31/2005', '12/31/2005', '2/28/2006', '2/28/2007']
df['DAILY_RETURN'] = [-8, 9, 5, 10, 14]
df = df[df.DAILY_RETURN > 0]
df['Date_obj'] = df['Date'].apply(lambda x: datetime.strptime(x, '%m/%d/%Y').month)
df.groupby('Date_obj').count()[['DAILY_RETURN']]