如何更新亚秒级时间序列熊猫数据框中的单元格值

时间:2020-01-04 23:55:47

标签: python pandas dataframe

当数据帧索引为亚秒级时间序列时,我无法更新单元格值。例如:

import numpy as np
import pandas as pd

t0 = '2019-01-05 22:00:00.000'
t1 = '2019-01-05 22:00:05.000'

df_times = pd.date_range(t0, t1, freq = '500L')

df = pd.DataFrame()
df['datetime'] = df_times
df['Value']=[20,21,22,23,24,25,26,27,28,29,30]
df['Target'] = range(len(df_times))
df = df.set_index('datetime')
df

将导致此数据框

Dataframe contents

如果我尝试更新索引为'2019-01-05 22:00:02.000'的单元格'Target',我最终也会更新索引为'2019-01-05 22:00的'Target'单元格: 02.500'。

two cells updated instead of one

我该如何解决?

1 个答案:

答案 0 :(得分:2)

这可以解决问题:

df.loc[pd.to_datetime('2019-01-05 22:00:02.000'), 'Target']=57

显然,它隐式地将字符串强制转换为与pandas版本不同的日期时间。

在这种情况下,使用.loc[]也会更好。