使用频率为1分钟的Python在时间序列中丢弃具有Nan值的任何一天

问题描述

我有一个频率为1分钟的时序数据帧。我需要删除具有一个或多个nan值的任何一天。 例如,在以下df中,需要删除2012-10-15和2012-10-25天。

import pandas as pd
index=pd.date_range(start='2012-10-15',end='2012-10-25',freq='1Min')
df=pd.DataFrame(range(len(index)),index=index,columns=['Number'])
df.iloc[1]=np.nan
df.iloc[-2]=np.nan
print(df)

解决方法

您可以使用isnanan提取的日期检查groupby.transform()df.index.normalize()

mask = df['Number'].isna().groupby(df.index.normalize()).transform('any')

df[~mask]