我有一个具有以下格式的 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,但没有展示如何在其他值之间添加值(熊猫博士).
最好的继续方式是什么?
我认为你需要首先添加新的价值35
to 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
,谢谢你的主意鲁特格·卡西斯.
DataFrame.squeeze create 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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)