gpt4 book ai didi

python - 使用 python pandas 计算每日总和

转载 作者:太空狗 更新时间:2023-10-30 00:30:15 25 4
gpt4 key购买 nike

我正在尝试使用 pandas 计算每天的值(value)总和。这是测试文件 - 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 - 使用 python pandas 计算每日总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13475812/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com