首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果计数等于条件的话,熊猫群相加

如果计数等于条件的话,熊猫群相加
EN

Stack Overflow用户
提问于 2019-06-29 14:19:31
回答 2查看 307关注 0票数 0

我在从弗雷德那里下载数据。我在总结年度数字,但不想要不完整的年份。所以我需要一个求和条件,如果数到12,因为这个系列是每月的。

代码语言:javascript
运行
复制
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年出现。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-29 14:24:26

在您的例子中,我们使用transformnunique来确保每年都有12个唯一的月份,如果没有,则在执行groupby sum之前删除它。

代码语言:javascript
运行
复制
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

代码语言:javascript
运行
复制
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()
票数 1
EN

Stack Overflow用户

发布于 2019-06-29 15:24:02

您可以使用aggreate函数countgroupby

代码语言:javascript
运行
复制
df['year'] = df.index.year
df = df.groupby('year').agg({'RSFSXMV': 'sum', 'year': 'count'})

这会给你:

代码语言:javascript
运行
复制
        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的行。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56818258

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档