带有 DatetimeIndex [Python] 的 Pandas set_Value

Ser*_*Dev 5 python dataframe pandas

我正在尝试使用 df.set_Value.

df 格式:

    Count   DTW
DateTime        
2015-01-16  10  0
2015-01-17  28  0
Run Code Online (Sandbox Code Playgroud)

使用 df.setValue

dw.set_Value(idx, 'col', dtw) # idx and dtw are int values

TypeError: cannot insert DatetimeIndex with incompatible label
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个错误,或者有什么具有可比效率的替代方法?

jez*_*ael 5

我认为你有Series,没有DataFrame,所以使用Series.set_value索引转换为datetime

dw = pd.Series([-2374], index = [pd.to_datetime('2015-01-18')])
dw.index.name = 'DateTime'
print (dw)
DateTime
2015-01-18   -2374
dtype: int64

print (dw.set_value(pd.to_datetime('2015-01-19'), 1))
DateTime
2015-01-18   -2374
2015-01-19       1
dtype: int64
Run Code Online (Sandbox Code Playgroud)
print (dw.set_value(pd.datetime(2015, 1, 19), 1))
DateTime
2015-01-18   -2374
2015-01-19       1
dtype: int64
Run Code Online (Sandbox Code Playgroud)

更标准的方法是使用ixiloc

print (dw)
            Count  DTW
DateTime              
2015-01-16     10    0
2015-01-17     28    0

dw.ix[1, 'DTW'] = 10
#dw.DTW.iloc[1] = 10
print (dw)
            Count  DTW
DateTime              
2015-01-16     10    0
2015-01-17     28   10
Run Code Online (Sandbox Code Playgroud)