Python日期时间重采样会突然产生NaN值



我已经尝试将我的值重新采样到小时。然而,由于我已经更改了csv文件中日期的格式,因为自动交换了低数字的月份和日期(2003-04-01突然变成了2003-01-04(。现在日期格式很好(在Python中显示csv文件时(,但在使用重采样时,值显示为NaN值。

df = pd.read_csv(r'C:Userswater_level.csv',parse_dates=[0],index_col=0,decimal=",", delimiter=';')

`hour_avg = df_2.resample('H').mean()` 

我的数据示例:以时间为索引的原始数据

之后:即使时间是datetime,它也会将99%的数据显示为NaN值(每天显示一个值(每小时重采样后NaN值的数据

当我对日值使用重采样时,所有值都会返回。看来《时代》杂志出了问题。当我在开始时使用该格式时;格式不适合";出现。我以前尝试过不同的方法(不确定有什么不同(,但重新采样每小时工作一次。

我需要更改什么才能再次使用重采样一小时?

您可以共享数据样本吗?假设您的数据由DateTime功能(即yyyy-mm-dd hh-mm-ss(和其他一些尝试按小时重新采样的功能组成,则NaN值的出现可能有两个原因:Pandas格式不正确或数据中缺少小时值。

(1(熊猫可能没有正确阅读你的日期。读取文件后,请确保日期列的格式正确(即yyyy-mm-dd(。

df = pd.read_csv(r'C:Userswater_level.csv',parse_dates=[0],index_col=0,decimal=",", delimiter=';')
df['date'] = pd.to_datetime(df['date'], format='%Y-%m-%d %H:%M:%S')

(2(如果数据中有任何空白,NaN值将弹出。例如,假设数据是这样的形式:

2000-01-01 00:00:00    1
2000-01-01 00:01:00    1
2000-01-01 00:03:00    1
2000-01-01 00:04:00    1
2000-01-01 00:06:00    1

如果您尝试hour_avg = df_2.resample('H').mean(),您的输出将看起来像:

2000-01-01 00:00:00    1
2000-01-01 00:01:00    1
2000-01-01 00:02:00    NaN
2000-01-01 00:03:00    1
2000-01-01 00:04:00    1
2000-01-01 00:05:00    NaN
2000-01-01 00:06:00    1

我怀疑问题出在后者身上。如果是后者,则可以使用df_2.dropna()简单地删除NaN值。否则,如果你确实需要每小时一次的垃圾箱,而不考虑丢失的数据,你可以通过先填充丢失的值,然后尝试获得平均值来避免NaN值:

hour_pad = df_2.resample('H').pad()
hour_avg = hour_pad.resample('H').mean()

最新更新