我正在尝试使用pandas计算每日值的总和。这是测试文件 - http://pastebin.com/uSDfVkTS
这是我目前想出来的代码:
使用给定的测试文件,会产生以下结果:
import numpy as np
import datetime as dt
import pandas as pd
f = np.genfromtxt('test', dtype=[('datetime', '|S16'), ('data', '<i4')], delimiter=',')
dates = [dt.datetime.strptime(i, '%Y-%m-%d %H:%M') for i in f['datetime']]
s = pd.Series(f['data'], index = dates)
d = s.resample('D', how='sum')
使用给定的测试文件,会产生以下结果:
2012-01-02 1128
Freq: D
第一个问题是计算的总和对应于下一天。我已经能够通过使用参数loffset='-1d'来解决这个问题。
现在实际的问题是数据可能不是从一天的00:30开始,而是从一天的任何时间开始。此外,数据中有用'nan'值填充的间隙。
话虽如此,是否可以设置必须计算每日总和的值的下限?(例如,如果单日少于40个值,则将NaN放入总和中)
我相信可以定义一个自定义函数来完成这个任务,并在'how'参数中引用它,但我不知道如何编写该函数本身。