我在从弗雷德那里下载数据。我在总结年度数字,但不想要不完整的年份。所以我需要一个求和条件,如果数到12,因为这个系列是每月的。
import pandas_datareader.data as web
mnemonic = 'RSFSXMV'
df = web.DataReader(mnemonic, 'fred', 2000, 2020)
df['year'] = df.index.year
new_df = df.groupby(["year"])[mnemonic].sum().reset_index()
print(new_df)我不想2019年出现。
发布于 2019-06-29 14:24:26
在您的例子中,我们使用transform和nunique来确保每年都有12个唯一的月份,如果没有,则在执行groupby sum之前删除它。
df['Month']=df.index.month
m=df.groupby('year').Month.transform('nunique')==12
new_df = df.loc[m].groupby(["year"])[mnemonic].sum().reset_index()isin
df['Month']=df.index.month
m=df.groupby('year').Month.nunique()
new_df = df.loc[df.year.isin(m.index[m==12)].groupby(["year"])[mnemonic].sum().reset_index()发布于 2019-06-29 15:24:02
您可以使用aggreate函数count而groupby
df['year'] = df.index.year
df = df.groupby('year').agg({'RSFSXMV': 'sum', 'year': 'count'})这会给你:
RSFSXMV year
year
2000 2487790 12
2001 2563218 12
2002 2641870 12
2003 2770397 12
2004 2969282 12
2005 3196141 12
2006 3397323 12
2007 3531906 12
2008 3601512 12
2009 3393753 12
2010 3541327 12
2011 3784014 12
2012 3934506 12
2013 4043037 12
2014 4191342 12
2015 4252113 12
2016 4357528 12
2017 4561833 12
2018 4810502 12
2019 2042147 5然后简单地删除那些年数小于12的行。
https://stackoverflow.com/questions/56818258
复制相似问题