我有一个Pandas数据帧,格式如下:
Frequency | Value 1 10 2.8 2 20 2.5 3 30 2.2 4 40 2.3
我想使用pandas.DataFrame.interpolate
以便在频率35处添加一条线,其值在频率30和40之间线性插值.
在用户手册中,该示例显示了如何替换Nan,而不是如何在其他人之间添加值(Pandas doc).
什么是最好的方法?
我认为您首先需要35
向frequency
列添加新值loc
,sort_values
然后interpolate
:
df.loc[-1, 'Frequency'] = 35 df = df.sort_values('Frequency').reset_index(drop=True) print (df) Frequency Value 0 10.0 2.8 1 20.0 2.5 2 30.0 2.2 3 35.0 NaN 4 40.0 2.3 df = df.interpolate() print (df) Frequency Value 0 10.0 2.80 1 20.0 2.50 2 30.0 2.20 3 35.0 2.25 4 40.0 2.30
解决方案Series
,谢谢你的想法Rutger Kassies.
DataFrame.squeeze
Series
用一列创建DataFrame
.
s = df.set_index('Frequency').squeeze() s.loc[35] = np.nan s = s.sort_index().interpolate(method='index') print (s) Frequency 10 2.80 20 2.50 30 2.20 35 2.25 40 2.30 Name: Value, dtype: float64