假设我有一个包含10行和16列的Python Pandas数据帧。每行代表一种产品。第一列是产品ID。其他15列是
的售价2010 / 01,2010 / 02,2010 / 03,2010 / 05,2010 / 06,2010 / 07,2010 / 08,2010 / 10,2010 / 11,2010 / 12,2011 / 01,2011 / 02 ,2011 / 03,2011 / 04,2011 / 05。
(列名是字符串,不是日期格式)现在我想计算每个季度的平均售价(2010年第二季度,2010年第二季度,2011年第二季度),我不知道如何处理它。 (请注意,2010/04年度,2010/09年度和2011/06年度缺少月份。)
上面的描述只是一个例子。因为这个数据集非常小。可以手动循环。但是,我使用的实际数据集是10730 * 202。因此,我无法手动检查实际丢失的月份或手动映射季度。我想知道我可以在这里应用什么有效的方式。
感谢您的帮助!
答案 0 :(得分:1)
这应该有所帮助。
import pandas as pd
import numpy as np
rng = pd.DataFrame({'date': pd.date_range('1/1/2011', periods=72, freq='M'), 'value': np.arange(72)})
df = rng.groupby([rng.date.dt.quarter, rng.date.dt.year]) .mean()
df.index.names = ['quarter', 'year']
df.columns = ['mean']
print df
mean
quarter year
1 2011 1
2012 13
2013 25
2014 37
2015 49
2016 61
2 2011 4
2012 16
2013 28
2014 40
2015 52
2016 64
3 2011 7
2012 19
2013 31
2014 43
2015 55
2016 67
4 2011 10
2012 22
2013 34
2014 46
2015 58
2016 70