首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python数据中的插值

Python数据中的插值
EN

Stack Overflow用户
提问于 2017-08-11 18:39:11
回答 1查看 1.2K关注 0票数 1

我试图在Python中执行线性插值,以便根据某一列中的某些值计算插值值。

在下面的示例中,我希望使用插值中高度列中相关单元格的实际数值来插值产品"a“和"b”的测量值。我可以称高度列为插值的索引吗?

当我插值乘积"a“的缺失测量值时,用于插值的索引值为4、5和7。对于乘积"b”的插值,使用的索引值为1、2.2和3。

我知道dataframe.interpolate(),但我很难修改代码以使用正确的索引值。

下面是我开始使用的dataframe的代码:

代码语言:javascript
复制
import pandas as pd
testdata1 = [('Product', ['a', 'a', 'a', 'b', 'b', 'b','b']),
     ('Height', ['4', '5', '7', '1',  '2.2', '3','4']),
     ('Measurement', ['35.00', '', '55.00','10.00','','30.00','40.00']),
     ]
df = pd.DataFrame.from_items(testdata1)
df

下面是我需要的数据文件的代码:

代码语言:javascript
复制
targetdf = [('Product', ['a', 'a', 'a', 'b', 'b', 'b','b']),
     ('Height', ['4', '5', '7', '1',  '2.2', '3','4']),
     ('Measurement', ['35.00', '41.67', '55.00','10.00','22.00','30.00','40.00']),
     ]
df2 = pd.DataFrame.from_items(targetdf)
df2

如果不能用dataframe来完成这一任务,我愿意使用Python进行其他操作。

任何帮助都是非常感谢的。我是Python新手。谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-11 18:44:20

您可以首先使用一些数据清理:

代码语言:javascript
复制
#convert '' to `NaN`s and all strings to numeric
df['Measurement'] = pd.to_numeric(df['Measurement'], errors='coerce')
#convert strings to numeric
df['Height'] =  df['Height'].astype(float)

然后使用set_indexgroupbyapply自定义函数和interpolate,最后通过reindex获得reset_index和列的原始顺序。

代码语言:javascript
复制
df1 = df.set_index('Height') \
        .groupby('Product') \
        .apply(lambda x: x.interpolate(method='index')) \
        .reset_index() \
        .reindex(columns=df.columns)
print (df1)
  Product  Height  Measurement
0       a     4.0    35.000000
1       a     5.0    41.666667
2       a     7.0    55.000000
3       b     1.0    10.000000
4       b     2.2    22.000000
5       b     3.0    30.000000
6       b     4.0    40.000000
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45641846

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档