当数据帧索引为亚秒级时间序列时,我无法更新单元格值。例如:
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
将导致此数据框
如果我尝试更新索引为'2019-01-05 22:00:02.000'的单元格'Target',我最终也会更新索引为'2019-01-05 22:00的'Target'单元格: 02.500'。
two cells updated instead of one
我该如何解决?
答案 0 :(得分:2)
这可以解决问题:
df.loc[pd.to_datetime('2019-01-05 22:00:02.000'), 'Target']=57
显然,它隐式地将字符串强制转换为与pandas
版本不同的日期时间。
在这种情况下,使用.loc[]
也会更好。