我有一个Pandas数据帧,格式如下:
Frequency | Value
1 10 2.8
2 20 2.5
3 30 2.2
4 40 2.3
Run Code Online (Sandbox Code Playgroud)
我想使用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
Run Code Online (Sandbox Code Playgroud)
解决方案Series,谢谢你的想法Rutger Kassies.
DataFrame.squeezeSeries用一列创建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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1771 次 |
| 最近记录: |