python每分钟数据的每日数据

时间:2016-11-09 01:34:39

标签: python datetime pandas dataframe time-series

我有一个index = datetime.datetime分钟的数据帧。我想运行一个循环,每次迭代,我想只获取给定日期的数据。除了以下内容之外,还有更好的方法吗?

data['index_date'] = data['index'].apply(lambda dt: datetime.datetime(dt.year, dt.month, dt.day, 0,0))

days= data['index_date'].unique()

for day is days:
    data_day= data[data['index_date']==day]

只是“数据”df的样本:

>>> data
Out[8]: 
         index             90    180
2016-01-04 02:30:00-05:00 1.000 1.000
2016-01-04 02:31:00-05:00 1.000 1.000
2016-01-04 02:32:00-05:00 1.000 1.000
2016-01-04 02:33:00-05:00 1.000 1.000
2016-01-04 02:34:00-05:00 1.000 1.000

...                         ...   ...
2016-07-26 12:51:00-04:00 1.000 1.000
2016-07-26 12:52:00-04:00 1.000 1.000
2016-07-26 12:53:00-04:00 1.000 1.000
2016-07-26 12:54:00-04:00 1.000 1.000
2016-07-26 12:55:00-04:00 1.000 1.000
2016-07-26 12:56:00-04:00 1.000 1.000

1 个答案:

答案 0 :(得分:2)

考虑df

n = 10000
df = pd.DataFrame({'index': pd.date_range('2010-01-01', periods=n, freq='T'),
                    90: np.random.rand(n) * 10,
                    100: np.random.randn(n) * 100})

然后你就可以得到一本日子词典

g = df.set_index('index').groupby(pd.TimeGrouper('D'))
d = {k: v for k, v in g}

或小组

p = pd.Panel(d)

或数据框

dfg = pd.concat(d.values, keys=d.keys())