gpt4 book ai didi

python - 如何按天拆分 Pandas 数据框或系列(可能使用迭代器)

转载 作者:太空狗 更新时间:2023-10-29 20:35:57 25 4
gpt4 key购买 nike

我有一个很长的时间序列,例如。

import pandas as pd
index=pd.date_range(start='2012-11-05', end='2012-11-10', freq='1S').tz_localize('Europe/Berlin')
df=pd.DataFrame(range(len(index)), index=index, columns=['Number'])

现在我想提取每天的所有子数据帧,以获得以下输出:

df_2012-11-05: data frame with all data referring to day 2012-11-05
df_2012-11-06: etc.
df_2012-11-07
df_2012-11-08
df_2012-11-09
df_2012-11-10

避免检查 index.date==give_date 是否非常慢的最有效方法是什么。此外,用户不知道框架中天数的范围。

有什么提示可以用迭代器来做吗?

我目前的解决方案是这样的,但它不是那么优雅,并且有两个问题定义如下:

time_zone='Europe/Berlin'
# find all days
a=np.unique(df.index.date) # this can take a lot of time
a.sort()
results=[]
for i in range(len(a)-1):
day_now=pd.Timestamp(a[i]).tz_localize(time_zone)
day_next=pd.Timestamp(a[i+1]).tz_localize(time_zone)
results.append(df[day_now:day_next]) # how to select if I do not want day_next included?

# last day
results.append(df[day_next:])

这种方法存在以下问题:

  • a=np.unique(df.index.date) 可能需要很多时间
  • df[day_now:day_next] 包含 day_next,但我需要将其排除在范围内

最佳答案

如果你想按日期分组(又名:年+月+日),那么使用df.index.date:

result = [group[1] for group in df.groupby(df.index.date)]

因为 df.index.day 将使用一个月中的第几天(即:从 1 到 31)进行分组,如果输入数据帧日期扩展到多个月,这可能会导致不良行为。

关于python - 如何按天拆分 Pandas 数据框或系列(可能使用迭代器),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21605491/

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