我需要每日价值的总和,但仅限于天数,不包含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')
有人知道怎么做吗?
答案 0 :(得分: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')
答案 1 :(得分:0)
在这种情况下,我认为你想使用:
ts.dropna()