使用python 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”参数中对其进行引用,但是我不知道如何对函数本身进行编码。

回答:

您可以直接在Pandas中进行操作:

s = pd.read_csv('test', header=None, index_col=0, parse_dates=True)

d = s.groupby(lambda x: x.date()).aggregate(lambda x: sum(x) if len(x) >= 40 else np.nan)

X.2

2012-01-01 1128

以上是 使用python pandas计算每日总和 的全部内容, 来源链接: utcz.com/qa/400032.html

回到顶部