gpt4 book ai didi

python - Pandas 多索引聚合

转载 作者:行者123 更新时间:2023-12-01 02:32:04 25 4
gpt4 key购买 nike

我正在尝试根据 pandas.date_range 生成的 DatetimeIndex 对多索引DataFrame 进行一些聚合.

我的DatetimeIndex看起来像这样:

DatetimeIndex(['2000-05-30', '2000-05-31', '2000-06-01' ... '2001-1-31'])

我的多索引 DateFrame 看起来像这样:

                     value
date id
2000-05-31 1 0
2 1
3 1
2000-06-30 2 1
3 0
4 0
2000-07-30 2 1
4 0
1 0
2002-09-30 1 1
3 1

DatetimeIndex 中的日期可能在也可能不在日期索引中

我需要检索所有id,以便value==1的百分比大于或等于某个小数阈值,例如0.6 对于该 id 的日期位于 DatetimeIndex 中的所有行。

例如,如果阈值是 0.5,那么输出应该是 [2, 3] 或某个包含 2 的 DataFrame 3

1 不满足要求,因为 2002-09-30 不在 DatetimeIndex 中。

我有一个带有循环和字典的解决方案来跟踪每个 id 的 value==1 频率,但它运行速度非常慢。

如何利用 pandas 执行此聚合?

谢谢。

最佳答案

您可以使用:

#define range
rng = pd.date_range('2000-05-30', '2000-7-01')

#filtering with isin
df = df[df.index.get_level_values('date').isin(rng)]

#get all treshes
s = df.groupby('id')['value'].mean()
print (s)
id
1 0.0
2 1.0
3 0.5
4 0.0
Name: value, dtype: float64

#get all values of index by tresh
a = s.index[s >= 0.5].tolist()
print (a)
[2, 3]

关于python - Pandas 多索引聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46688704/

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