簡體   English   中英

Pandas使用新長度插入數據幀

[英]Pandas Interpolate dataframe with new length

我有一個包含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
....

我嘗試過使用interpolate命令,但是對於新的數據幀長度沒有參數。

df.interpolate(method='linear')

我想我可以使用.loc在數據幀​​的每一行之間包含5行NAN,然后使用插值函數,但這似乎是一個糟糕的解決方法。

解決方案如果未將初始列導入為datetime,則使用DatetimeIndex可以消除與其他列的關聯。

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

給出正確的答案。

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來確定插值的完成方式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM