2

我需要每日值的总和,但只需要不包含 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')

有人知道怎么做吗?

4

2 回答 2

2

如果我理解正确,您想从包含 NaN 的任何日期中过滤掉所有数据,然后将这些天数与完整的无 NaN 数据集相加。

为简单起见,通过使用squeeze关键字使其成为系列,而不是数据帧。(这不是必需的,但它使接下来的内容更加直接。)

et = pd.read_csv(..., index_col=0, squeeze=True)

要过滤掉任何 NaN 的天数,

complete_days_only = et.groupby(lambda x: x.date).filter(lambda x: ~x.isnull().any())

现在重新采样

complete_days_only.resample('D', how='sum')
于 2013-08-16T19:02:29.430 回答
0

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

ts.dropna()

于 2013-08-17T00:42:42.497 回答