我有一个按(年,月)分组的数据框。我想查看每个(年、月)组中第 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”。
我尝试过遍历组,重置索引并连接帧,但感觉就像我忽略了一些更简单的方法!
谢谢你。