使用pandas将多天的数据框拆分为半小时数据框并保存为csv文件

0 投票
1 回答
1228 浏览
提问于 2025-04-17 22:39

我需要把一些很大的文件(有几百万条记录)分成每半小时一个的小文件,这样才能和其他一些第三方软件一起使用。我试过这样做:

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) 这些大文件中有空缺,所以有些半小时的数据可能不完整,甚至有些半小时的数据可能完全缺失。

1 个回答

7

把你的分组器做成这样:

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

在0.14版本中,这个会稍微有所不同,比如说你可以用 df.groupby(pd.Grouper(freq='30T')) 这样的方式。

撰写回答