大Pandas数据框架集团年指数

2024-09-29 21:30:33 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有一个索引为monthy timestep的数据帧,我知道我可以使用dataframe.groupby(lambda x:x.year)将每月的数据分组到yearly并应用其他操作。有没有什么方法可以让我快速地将他们分组,比如说按十年分组?

谢谢你的提示。


Tags: 数据方法lambdadataframeyeargroupbyyearlytimestep
3条回答

使用索引的年份属性:

df.groupby(df.index.year)

假设您的日期列的名称是Date,那么您可以分组

dataframe.set_index('Date').ix[:,0].resample('10AS', how='count')

注意:ix-这里选择数据帧中的第一列

你可以得到不同的偏移: http://pandas.pydata.org/pandas-docs/stable/timeseries.html#offset-aliases

为了得到十年,你可以把年份除以10,然后乘以10。例如,如果你从

>>> dates = pd.date_range('1/1/2001', periods=500, freq="M")
>>> df = pd.DataFrame({"A": 5*np.arange(len(dates))+2}, index=dates)
>>> df.head()
             A
2001-01-31   2
2001-02-28   7
2001-03-31  12
2001-04-30  17
2001-05-31  22

你可以像往常一样按年分组(这里我们有一个DatetimeIndex,所以很简单):

>>> df.groupby(df.index.year).sum().head()
         A
2001   354
2002  1074
2003  1794
2004  2514
2005  3234

或者你可以做(x//10)*10技巧:

>>> df.groupby((df.index.year//10)*10).sum()
           A
2000   29106
2010  100740
2020  172740
2030  244740
2040   77424

如果你没有可以使用.year的东西,你仍然可以使用lambda x: (x.year//10)*10)

相关问题 更多 >

    热门问题