2016-08-19 2 views
3

Я пытаюсь добавить результат по строкам из функции в мою фреймворк с использованием df.set_Value.Pandas set_Value с DatetimeIndex [Python]

df в формате:

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

Использование df.setValue

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

TypeError: cannot insert DatetimeIndex with incompatible label 

Как решить эту ошибку или что альтернативный метод с сопоставимой эффективностью там?

ответ

4

Я думаю, что у вас есть 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 

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

Более стандартным способом является использование ix или 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 
+0

I Получать значение idx из поэтому я хотел выделить его напрямую, используя значение int, я думаю, что это создало проблему с индексом, поскольку оно не находится в числовом порядке, а вместо этого является индексом DateTime. Надеюсь, это прояснило мой вопрос. – SerialDev

+0

Итак, у вас есть первый индекс с значениями 'int' и' datetime'? Или нужно переписать некоторое значение, например. '28' в образце? Или добавить новую строку? – jezrael

+0

Я хочу установить значение в существующей строке с индексом datetime, существует ли итерабельность, которую я мог бы использовать для получения индекса datetime, а не int? – SerialDev

Смежные вопросы