gpt4 book ai didi

python - 我如何在 Pandas 中按月内的第 n 个工作日分组?

转载 作者:行者123 更新时间:2023-11-28 19:24:12 25 4
gpt4 key购买 nike

我有一个按(年,月)分组的 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 '.

我已经尝试遍历组、重置索引和连接帧,但感觉我忽略了一些更简单的方法!

谢谢。

最佳答案

您会很高兴发现名为nth 的方法。例如,要访问每个月的第 9 个条目,

In [15]: group.nth(9)
Out[15]:
A B C D
2012 1 0.259695 0.670270 0.467452 0.796057
2 0.744701 0.633857 0.530602 0.978068
3 0.901194 0.684747 0.091563 0.582004
4 0.728239 0.421065 0.044452 0.750780
5 0.792513 0.016461 0.646832 0.858187
6 0.662756 0.753480 0.030328 0.105000
7 0.630161 0.473097 0.504618 0.156850
8 0.143587 0.955368 0.939281 0.632951
9 0.115629 0.310003 0.170585 0.166392
10 0.458202 0.293087 0.171136 0.106911
11 0.098920 0.275812 0.057490 0.683633
12 0.601598 0.663051 0.094602 0.500480

要解决您的第二个问题——生成一个按日期和列名索引的系列,如 ('A', 1)——使用 df1.unstack().squeeze()。 unstacking 以您想要的方式 reshape 它,squeeze 将结果从单列 DataFrame 转换为 Series。

关于python - 我如何在 Pandas 中按月内的第 n 个工作日分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16972557/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com