2016-08-19 81 views
3

我想從一個函數添加行的結果到我的數據框使用 df.set_Value熊貓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 

更多的標準方法是使用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 
+0

我從m獲得idx值所以我想直接使用一個int值分配它,我認爲這造成了索引的一個問題,因爲它不是以數字順序排列,而是一個DateTime索引。我希望這個澄清我的問題 – SerialDev

+0

那麼你有第一個索引'int'和'datetime'值?或者需要覆蓋一些值,例如樣本中有'28'?或添加新行? – jezrael

+0

我想在具有日期時間索引的現有行上設置值,是否有可用於獲取日期時間索引而不是int的迭代? – SerialDev

相關問題