SerialDev SerialDev - 3 months ago 53
Python Question

Pandas set_Value with DatetimeIndex [Python]

I'm trying to add the row-wise result from a function into my dataframe using

df.set_Value
.

df
in the format :

Count DTW
DateTime
2015-01-16 10 0
2015-01-17 28 0


Using
df.setValue


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

TypeError: cannot insert DatetimeIndex with incompatible label


How do I solve this error or what alternative method with comparable efficiency is there?

Answer

I think you have Series, not DataFrame, so use Series.set_value with index converted to 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

print (dw.set_value(pd.datetime(2015, 1, 19), 1))
DateTime
2015-01-18   -2374
2015-01-19       1
dtype: int64

More standard way is use ix or iloc:

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