我有一張桌子:
-60 -40 -20 0 20 40 60
100 520 440 380 320 280 240 210
110 600 500 430 370 320 280 250
120 670 570 490 420 370 330 290
130 740 630 550 480 420 370 330
140 810 690 600 530 470 410 370
頂部的標題是風向量,左側的第一個列是距離。表格“正文”中的實際資料只是一種燃料添加劑。
我對 Pandas 和 Numpy 很陌生,所以請原諒這個問題的簡單性。我想知道的是,如何使用標題進入表格以檢索一個數字?我已經看到它可能使用索引,但如果我不需要,我不想使用該方法。
例如:我有一個風單位-60和距離,120所以我需要檢索數字670。我如何使用 Numpy 或 Pandas 來做到這一點?
另外,如果我有一個風單位 say-50和一個距離125,那么是否可以以簡單的方式插入這些單位?
編輯:
這是我迄今為止嘗試過的:
import pandas as pd
df = pd.read_table('fuel_adjustment.txt', delim_whitespace=True, header=0,index_col=0)
print(df.loc[120, -60])
但得到錯誤:
line 3083, in get_loc raise KeyError(key) from err
KeyError: -60
uj5u.com熱心網友回復:
您可以使用以下方法從現有索引中選擇任何單元格:
df.loc[120,-60]
然而,索引的型別需要是整數。如果沒有,您可以使用以下方法修復它:
df.index = df.index.map(int)
df.columns = df.columns.map(int)
對于插值,您需要使用 添加空的新行/列reindex,然后應用于interpolate每個維度。
(df.reindex(index=sorted(df.index.to_list() [125]),
columns=sorted(df. columns.to_list() [-50]))
.interpolate(axis=1, method='index')
.interpolate(method='index')
)
輸出:
-60 -50 -40 -20 0 20 40 60
100 520.0 480.0 440.0 380.0 320.0 280.0 240.0 210.0
110 600.0 550.0 500.0 430.0 370.0 320.0 280.0 250.0
120 670.0 620.0 570.0 490.0 420.0 370.0 330.0 290.0
125 705.0 652.5 600.0 520.0 450.0 395.0 350.0 310.0
130 740.0 685.0 630.0 550.0 480.0 420.0 370.0 330.0
140 810.0 750.0 690.0 600.0 530.0 470.0 410.0 370.0
uj5u.com熱心網友回復:
為此,您可以簡單地使用 df.loc
df.loc[120,-60]
uj5u.com熱心網友回復:
您需要檢查索引和列的資料型別。那應該是你失敗的原因df.loc[120,-60]。
嘗試:
df.loc[120, "-60"]
要驗證資料型別,您可以呼叫:
>>> df.index
Int64Index([100, 110, 120, 130, 140], dtype='int64')
>>> df.columns
Index(['-60', '-40', '-20', '0', '20', '40', '60'], dtype='object')
如果要將列標題轉換為 int64,則可能需要將其轉換為數字:
df.columns = pd.to_numeric(df.columns)
對于插值,我認為唯一的方法是首先創建不存在的索引和列,然后您可以獲得該值。但是,如果經常查詢,它會迅速增加您的 df。
- 首先,您需要添加不存在的索引和列。
- 逐行和逐列插值。
- 得到你的價值。
new_index = df.index.to_list()
new_index.append(125)
new_index.sort()
new_col = df.columns.to_list()
new_col.append(-50)
new_col.sort()
df = df.reindex(index=new_index, columns=new_col)
df = df.interpolate(axis=1).interpolate()
print(df[125, -50])
另一種方法是撰寫一個函式來獲取相對數字并回傳插值結果。
- 查找目標的上下索引和列。
- 獲取四個數字。
- 按順序插入索引和列。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/395406.html
