使用Pandas从时间序列中提取每日范围

时间:2014-07-24 12:52:02

标签: python-2.7 pandas

庞大的Pandas图书馆新手。

我有一个每小时的数据框,例如:

            date_time     open     high      low     close      volume
97759 2014-07-17 18:00:00  0.93702  0.93790  0.93696  0.93789    2098 

我需要每天进行处理,但需要查看该相对日的每小时数据。

1)我如何每天循环,

2)然后我如何单独提取当天的每小时时间序列(为了再次循环它或获得最大/最小值等)?

1 个答案:

答案 0 :(得分:1)

你对groupby有正确的想法。它能够按天分割您的数据,然后让您访问这些组。这里的诀窍是在系列df [' date_time']上使用apply方法。在一个系列上应用应用输入方法元素并返回一个新系列。你可以使用它来分割几天,然后再分开几个小时。

<强>输入

df = """            date_time     open     high      low     close      volume
97759  2014-07-17 18:00:00  0.93702  0.93790  0.93696  0.93789    2098
97758  2014-07-18 19:00:00  0.93702  0.93790  0.93696  0.93789    2098
97756  2014-07-18 20:00:00  0.93702  0.93790  0.93696  0.93789    2098"""

df = pd.read_csv(StringIO(df),sep="\s\s+")
df['date_time'] = df["date_time"].apply(lambda x: pd.to_datetime(x))

<强>溶液

#groupSeries = df["date_time"].apply(lambda x: pd.to_datetime(x).date() ) #if date_time column isn't already datetime
groupSeries = df["date_time"].apply(lambda x: x.date() ) #if date_time column is datetime obj

grouped =  df.groupby(groupSeries)
for k,g in grouped:
    print k,"\n",g,"\n"*2

<强>输出

key: 2014-07-17 
                date_time     open    high      low    close  volume
97759 2014-07-17 18:00:00  0.93702  0.9379  0.93696  0.93789    2098 

key: 2014-07-18 
                date_time     open    high      low    close  volume
97758 2014-07-18 19:00:00  0.93702  0.9379  0.93696  0.93789    2098
97756 2014-07-18 20:00:00  0.93702  0.9379  0.93696  0.93789    2098