【问题标题】:Splitting several days long dataframe into half-hourly dataframes using pandas and save them as csv-files使用 pandas 将几天长的数据帧拆分为半小时一次的数据帧并将它们保存为 csv 文件
【发布时间】:2014-03-17 21:27:52
【问题描述】:

我需要使用 pandas 将相当多的大型(数百万条记录)文件拆分为半小时一次的文件,以便与其他一些第三方软件一起使用。这是我尝试过的:

import datetime as dt
import string
import numpy as np
import pandas as pd

df = pd.DataFrame(np.random.rand(1728000, 2), index=pd.date_range('1/1/2014',
    periods=1728000, freq='0.1S'))
df_groups = df.groupby(df.index.map(lambda t: dt.datetime(t.year, t.month,
    t.day, t.hour)))
for name, group in df_groups:
    group.to_csv(string.replace(str(name), ':', '_') + '.csv')

但是这样我只能让熊猫按小时分开。如果我想将它们分成半小时一次的文件,我应该怎么做?

要记住几件事:a) 大文件可以跨越几天,所以如果我使用lambda t: t.hour,我会从不同的日子获取数据,但将相同的时间组合在一起; b) 大文件有间隙,所以有些半小时可能没有填满,有些可能完全丢失。

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    像这样制作你的石斑鱼:

    df.groupby(pd.TimeGrouper('30T'))
    

    在 0.14 中这会略有不同,例如df.groupby(pd.Grouper(freq='30T'))

    【讨论】:

    • 谢谢杰夫!那行得通。 :) pandas 网站上没有很好地记录此功能。这是在 0.13 中引入的吗?
    • TimeGrouper 一直是半记录的(不是很好)。已经存在很长时间了。在 0.14 中,使用pd.Grouper(基本上为您创建TimeGrouper)记录了所有更好的集成文档。您本质上是按时间分组,而不是重新采样。
    猜你喜欢
    • 1970-01-01
    • 2019-05-31
    • 2019-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-24
    • 2021-04-29
    • 1970-01-01
    相关资源
    最近更新 更多