我有一个按(年份,月份)分组的DataFrame。我想查看每个(年份,月份)组中第n行的统计信息 - 如何做到这一点?
因此,我的设置类似于:
import pandas as pd
import numpy as np
index = pd.bdate_range('2012-1-1', periods=250)
data = np.random.rand(250,4)
df = pd.DataFrame(data, index=index, columns=['A', 'B', 'C', 'D'])
group = df.groupby([lambda x: x.year, lambda x: x.month])
所以每个组只是:
group.get_group((2012,1))
A B C D
2012-01-02 0.981690 0.751655 0.040473 0.586829
2012-01-03 0.079392 0.726818 0.568717 0.916406
2012-01-04 0.138018 0.550194 0.321462 0.300273
2012-01-05 0.252901 0.169159 0.941170 0.733971
2012-01-06 0.054530 0.547185 0.751854 0.014632
2012-01-09 0.477299 0.411725 0.867734 0.986216
2012-01-10 0.791581 0.975181 0.453106 0.722259
2012-01-11 0.519475 0.667305 0.521249 0.114595
2012-01-12 0.240605 0.934308 0.957045 0.077284
2012-01-13 0.581049 0.946498 0.961401 0.733273
2012-01-16 0.534614 0.474576 0.580191 0.373324
2012-01-17 0.137119 0.760280 0.985439 0.044371
2012-01-18 0.966209 0.213359 0.333371 0.746351
2012-01-19 0.676534 0.370279 0.710987 0.061505
2012-01-20 0.058050 0.557478 0.116016 0.964448
2012-01-23 0.190743 0.900814 0.064952 0.369975
2012-01-24 0.048135 0.878783 0.970095 0.363559
2012-01-25 0.343305 0.023731 0.514298 0.131724
2012-01-26 0.626055 0.230893 0.557264 0.871486
2012-01-27 0.212099 0.287510 0.260152 0.634898
2012-01-30 0.233956 0.457482 0.516915 0.738543
2012-01-31 0.011327 0.161360 0.804554 0.897392
我希望获取每个组中第i行的平均值(即每个月的第i个工作日的平均值)。因此,输出将有约23行(或任何一个月中最大的工作日数),并且列为“ A”到“ D”。
其次,最佳的“展开”数据的方法是什么,以便输出只是由索引为(i,c)的系列组成,其中i为0到22,c为“A”到“D”。
我尝试了通过组进行迭代,重置索引并连接框架,但感觉忽略了一些更简单的方法!
谢谢。
grouped.get_group(...)
适用于获取具有特定索引的行,而不是第n个索引。 - Dan Allan