2024-09-29 21:30:33 发布
网友
假设我有一个索引为monthy timestep的数据帧,我知道我可以使用dataframe.groupby(lambda x:x.year)将每月的数据分组到yearly并应用其他操作。有没有什么方法可以让我快速地将他们分组,比如说按十年分组?
dataframe.groupby(lambda x:x.year)
谢谢你的提示。
使用索引的年份属性:
df.groupby(df.index.year)
假设您的日期列的名称是Date,那么您可以分组
Date
dataframe.set_index('Date').ix[:,0].resample('10AS', how='count')
注意:ix-这里选择数据帧中的第一列
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,所以很简单):
DatetimeIndex
>>> df.groupby(df.index.year).sum().head() A 2001 354 2002 1074 2003 1794 2004 2514 2005 3234
或者你可以做(x//10)*10技巧:
(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)。
.year
lambda x: (x.year//10)*10)
使用索引的年份属性:
假设您的日期列的名称是
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。例如,如果你从
你可以像往常一样按年分组(这里我们有一个
DatetimeIndex
,所以很简单):或者你可以做
(x//10)*10
技巧:如果你没有可以使用
.year
的东西,你仍然可以使用lambda x: (x.year//10)*10)
。相关问题 更多 >
编程相关推荐