我有一个df,
stamp value
0 00:00:00 2
1 00:00:00 3
2 01:00:00 5
转换为时间增量
df['stamp']=pd.to_timedelta(df['stamp'])
仅切片奇数索引并添加30分钟,
odd_df=pd.to_timedelta(df[1::2]['stamp'])+pd.to_timedelta('30 min')
#print(odd_df)
1 00:30:00
Name: stamp, dtype: timedelta64[ns]
现在,用odd_df更新df,
根据documentation,它应该提供我的预期输出。
预期输出:
df.update(odd_df)
#print(df)
stamp value
0 00:00:00 2
1 00:30:00 3
2 01:00:00 5
我得到的是什么
df.update(odd_df)
#print(df)
stamp value
0 00:30:00 00:30:00
1 00:30:00 00:30:00
2 00:30:00 00:30:00
请帮助,这有什么问题。
答案 0 :(得分:1)
尝试以下方法:
df.loc[1::2, 'stamp'] += pd.to_timedelta('30 min')
这确保您只更新.loc()函数指定的DataFrame中的值,同时保留其余原始DataFrame。要测试,请运行df.shape。使用上面的方法,您将获得(3,2)。
在您的代码中:
odd_df=pd.to_timedelta(df[1::2]['stamp'])+pd.to_timedelta('30 min')
odod_df数据框仅包含原始数据框的一部分。您切片的部分。奇数df的形状为(1,)。