如何使用df.update更新熊猫中另一个系列的某些行

时间:2018-09-29 14:13:10

标签: python pandas dataframe data-analysis

我有一个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

请帮助,这有什么问题。

1 个答案:

答案 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,)。