我有一个pandas.Series之类的
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
该帖子是这样的:
但是在当前的numpy版本中,np.diff()对于布尔型具有TypeError。
答案 0 :(得分:2)
您只能使用cumcount
和to_timedelta
为连续缺少的日期时间创建时间增量,因为仅过滤器添加了此行reindex
来填充现有数据的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))
最后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