使用python计算每日金额

使用python计算每日金额,python,pandas,Python,Pandas,我试着用熊猫计算每天的价值总和。这是测试文件- 这是我到目前为止提出的代码: 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 i

我试着用熊猫计算每天的价值总和。这是测试文件-

这是我到目前为止提出的代码:

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')
第一个问题是计算出的总数对应于第二天。我已经能够通过使用参数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

更简单的方法是使用
pd.gropper

d = s.groupby(pd.Grouper(freq='1D')).sum()
d = s.groupby(pd.Grouper(freq='1D')).sum()