2016-08-03 39 views
3

我有一個數據幀,包含Datetime,lat,lon,z列。我正在從csv文件中讀取數據,因此設置日期時間不起作用。時間間隔爲6小時,但我想將數據線性插值到小時間隔。熊貓使用新長度插值數據幀

圍棋從

 'A'    'B' 'C' 'D' 
0 2010-09-13 18:00:00 16.3 -78.5 1 
1 2010-09-14 00:00:00 16.6 -79.8 6 
2 2010-09-14 06:00:00 17.0 -81.1 12 

 'A'    'B' 'C' 'D' 
1 2010-09-13 18:00:00 16.3 -78.5 1  
2 2010-09-13 19:00:00 16.35 -78.7 2 
3 2010-09-13 20:00:00 16.4 -78.9 3 
4 2010-09-13 21:00:00 16.45 -79.1 4 
5 2010-09-13 22:00:00 16.5 -79.3 5 
.... 

我已經使用插值命令嘗試,但也有對數據幀的新長度沒有參數。

df.interpolate(method='linear') 

我在想,我可以使用的.loc包括在數據幀每一行之間的5行的NaN,然後​​使用插值功能,但似乎像一個壞的解決方法。

解決方案 如果您的初始列未作爲日期時間導入,則使用DatetimeIndex可消除與其他列的關聯。

i = pd.DatetimeIndex(start=df['A'].min(), end=df['A'].max(), freq='H') 
df = df.reindex(i).interpolate() 
print(df) 

給出正確答案。

+0

示例數據僅爲日期時間,經度,緯度......其中是z? – piRSquared

回答

1
i = pd.DatetimeIndex(start=df.index.min(), end=df.index.max(), freq='H') 
df = df.reindex(i).interpolate() 
print(df) 

輸出

2010-09-13 18:00:00 16.300000 -78.500000 
2010-09-13 19:00:00 16.350000 -78.716667 
2010-09-13 20:00:00 16.400000 -78.933333 
2010-09-13 21:00:00 16.450000 -79.150000 
2010-09-13 22:00:00 16.500000 -79.366667 
  1. 創建使用DatetimeIndexdocs)所需頻率的新指標。

  2. reindexdocs)與這個新索引。默認情況下,新索引的值爲np.nan

  3. interpolatedocs)填寫這些缺失的值。您可以提供method kwarg來確定如何完成插值。

+0

所以這個工作假設緯度/經度有datetime索引開始。但是如果最初的索引是1-3並且時間在標有'A'的第一列中呢? – BenT

+0

您可以使用'set_index'([docs](http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.set_index.html))將該列用作索引。 – Alex