庞大的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)然后我如何单独提取当天的每小时时间序列(为了再次循环它或获得最大/最小值等)?
答案 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