使用python仅汇总timeseries中的非NaN数据

使用python仅汇总timeseries中的非NaN数据,python,sum,pandas,time-series,nan,Python,Sum,Pandas,Time Series,Nan,我需要每日值的总和,但只从天开始,不包含NaN值。我的csv文件包含半小时的数据,但有时测量设备会出现故障。我需要每天的总和,但一旦它包含一个NaN值,我不希望它,总结这一天。 我的Csv文件如下所示: date time ET 28. Nov 01 08:15 -0.00152 28. Nov 01 08:45 -0.00324 28. Nov 01 09:15 0.00805 28. Nov 01 09:45 0.00684 28. Nov

我需要每日值的总和,但只从天开始,不包含NaN值。我的csv文件包含半小时的数据,但有时测量设备会出现故障。我需要每天的总和,但一旦它包含一个NaN值,我不希望它,总结这一天。 我的Csv文件如下所示:

date        time       ET
28. Nov 01  08:15   -0.00152
28. Nov 01  08:45   -0.00324
28. Nov 01  09:15   0.00805
28. Nov 01  09:45   0.00684
28. Nov 01  10:15   0.00918
28. Nov 01  10:45   
28. Nov 01  11:15   0.00867
28. Nov 01  11:45   0.01014
28. Nov 01  12:15   0.01697
28. Nov 01  12:45   0.00739
这一天缺少一个值,所以我不想要这一天的总和,而是所有其他有所有测量值的日子的总和

我目前的代码是:

import pandas as pd
ts = pd.read_csv('C:\Python27\Scripts\ET_T_2000.csv', sep=';', parse_dates=[['date', 'time']])
ts.fillna(0)
ts1 = ts.set_index('date_time')['ET'].resample('D', how='sum')

有人知道怎么做吗?

如果我理解正确,您希望过滤掉包含NaN的任何日期的所有数据,然后使用完整的、无NaN的数据集对这些日期求和

为了简单起见,使用
squence
关键字将其设置为一个系列,而不是一个数据帧。(这不是必需的,但它使后面的内容更直接一些。)

要过滤掉任何NaN的天数

complete_days_only = et.groupby(lambda x: x.date).filter(lambda x: ~x.isnull().any())
现在重新采样

complete_days_only.resample('D', how='sum')

在这种情况下,我认为您需要使用:


ts.dropna()

?实际上我不知道熊猫,但它看起来像是一个可以使用的工具。你可以尝试将nan转换为0,然后进行汇总。谢谢你的回答!但是我得到了错误:如果我在“pd.read.csv…”行中删除“parse_dates=[[['date','time']]”,则会出现错误:AttributeError:'str'对象没有属性'date'。如果我不删除它,则会出现错误:AttributeError:“SeriesGroupBy”对象没有属性“filter”。
SeriesGroupBy
没有属性
filter
“表示您使用的是没有筛选器的旧版本的pandas。如果可以,请更新熊猫的安装;否则,请使用
transform
仔细阅读我的旧答案,寻找解决方法。(我在这里回答了很多过滤问题。)
complete_days_only.resample('D', how='sum')