我想对Pandas Dataframe 的每一行应用一个函数,参数不是跨行可变的,而是函数本身根据列中的值对每一行都不同,让我们更具体地说:
import pandas as pd
from scipy.interpolate import interp1d
d = {'col1': [1, 2], 'col2': [2, 4], 'col3': [3, 6]}
df = pd.DataFrame(data=d)
| | 列1|列2|第3栏|
| - ------|- ------|- ------|- ------|
| 无|1个|第二章|三个|
| 1个|第二章|四个|六个|
现在,我想要实现的是按行外推第1列到第3列。对于第一行,这将是:
f_1 =interp1d(range(df.shape[1]), df.loc[0], fill_value='extrapolate')
具有外推值f_1(df.shape[1]).item() = 4.0
。
因此,我想添加的列是:
| 第4栏|
| - ------|
| 四个|
| 八个|
我试过以下方法:
import numpy as np
def interp_row(row):
n = row.shape[1]
fun = interp1d(np.arange(n), row, fill_value='extrapolate')
return fun(n+1).item()
df['col4'] = df.apply(lambda row: interp_row(row))
我能搞定吗?
1条答案
按热度按时间gr8qqesn1#
你就快到了
该函数返回: