簡體   English   中英

Python pandas dataframe 中的行之間的線性插值

[英]Python linear interpolation between rows in pandas dataframe

我有一個 dataframe

data=pd.DataFrame({'data1':[10,20,30], 'data2':[15,25,35], 'data3':[20,30,40], 'data3':[25,35,35]})

我想在行之間進行插值,具體取決於我的輸入 n。 這里 n=2

所以我的 new_data 必須包含 n*len(data)

當我嘗試 np.linspace 但我得到新長度為 n*len(data)-1

預計會得到

{ 數據1 數據2 數據3 10.0 15.0 25.0 15.0 20.0 30.0 20.0 25.0 35.0 25.0 30.0 35.0 30.0 35.0 35.0 20.0 25.0 30.0}

我想把最后一行作為輸入數據集中最后一行和第一行之間的插值

使用 np.interp() 進行插值:

data = pd.DataFrame({
    'data1': [10, 20, 30],
    'data2': [15, 25, 35],
    'data3': [20, 30, 40],
    'data4': [25, 35, 35]})
n = 2

df = data.append(data.iloc[0]).reset_index(drop=True)  # add first column for interpolation only

x = np.linspace(df.index.min(), df.index.max(), (len(df) - 1) * n + 1)  # x axis values to calculate

result = df.apply(lambda c: np.interp(x, df.index, c), axis=0).iloc[:-1]  # drop last column

暫無
暫無

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

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