假设我有一个以月份为时间步长的数据框,我知道可以使用
感谢任何提示。
dataframe.groupby(lambda x:x.year)
将月度数据分组为年度数据并应用其他操作。是否有一种方法可以快速将它们按十年为单位进行分组?感谢任何提示。
要获取一个年代,可以将该年份进行整数除以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)
。
如果您的数据框具有标题,比如:DataFrame ['人口','薪资','车辆数']
将您的索引设置为年份:DataFrame = DataFrame.set_index('Year')
使用以下代码对数据进行十年一次的重新采样,并在该十年内给出所有其他列的总和
datafame = dataframe.resample('10AS').sum()
使用索引的年份属性:
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