当前位置:  开发笔记 > 编程语言 > 正文

使用pandas.DataFrame.interpolate将行添加到DataFrame

如何解决《使用pandas.DataFrame.interpolate将行添加到DataFrame》经验,为你挑选了1个好方法。

我有一个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).

什么是最好的方法?



1> jezrael..:

我认为您首先需要35frequency列添加新值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.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

推荐阅读
拾味湖
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有