我需要将大量(几百万条记录)文件分成半小时文件,使用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)大文件有间隙,所以有些半小时可能不满,有些可能完全缺失。
答案 0 :(得分:5)
让你的石斑鱼像这样:
df.groupby(pd.TimeGrouper('30T'))
在0.14中,这将略有不同,例如df.groupby(pd.Grouper(freq='30T'))