向前填充具有特定值的时间戳列(1秒)

2024-05-07 12:55:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个熊猫系列比如:

Timestamp_data:
0   2018-09-26 04:38:32.544 
1   NaT
2   NaT
3   NaT
4   2018-09-26 04:58:32.544
5   NaT

我想在前一个可用的NaT上连续添加1秒:

    Timestamp_data:
0   2018-09-26 04:38:32.544 
1   2018-09-26 04:39:32.544
2   2018-09-26 04:40:32.544
3   2018-09-26 04:41:32.544
4   2018-09-26 04:58:32.544
5   2018-09-26 04:59:32.544

这是一篇这样的帖子:

Fill na values by adding x to previous row pandas

但在现在的numpy版本中np.差异()有布尔类型错误。你知道吗


Tags: to版本numpypandasdatabyfillnat
1条回答
网友
1楼 · 发布于 2024-05-07 12:55:49

只能使用^{}^{}为连续缺少的datetimes创建timedelta,因为只有filter行被添加^{}以填充现有数据的0 timedelta。你知道吗

上次向前填充NaT并添加新的Series

print (df)
           Timestamp_data
0 2018-09-26 04:25:32.544
1 2018-09-26 04:38:32.544
2                     NaT
3                     NaT
4                     NaT
5 2018-09-26 04:58:32.544
6                     NaT

m = df['Timestamp_data'].notna()
#old pandas alternative
#m = df['Timestamp_data'].notnull()

s = (pd.to_timedelta(df[~m].groupby(m.cumsum()).cumcount() + 1, unit='s')
       .reindex(df.index, fill_value=0))

Last是add1分钟的60乘以1秒:

df['Timestamp_data'] = df['Timestamp_data'].ffill()  + s * 60

print (df)
           Timestamp_data
0 2018-09-26 04:25:32.544
1 2018-09-26 04:38:32.544
2 2018-09-26 04:39:32.544
3 2018-09-26 04:40:32.544
4 2018-09-26 04:41:32.544
5 2018-09-26 04:58:32.544
6 2018-09-26 04:59:32.544

仅在一秒钟内按60删除多个:

df['Timestamp_data'] = df['Timestamp_data'].ffill()  + s 
print (df)
           Timestamp_data
0 2018-09-26 04:25:32.544
1 2018-09-26 04:38:32.544
2 2018-09-26 04:38:33.544
3 2018-09-26 04:38:34.544
4 2018-09-26 04:38:35.544
5 2018-09-26 04:58:32.544
6 2018-09-26 04:58:33.544

相关问题 更多 >