2017-08-11 8 views
1

私は、補間された値が特定の列の特定の値から計算されるように、Pythonで線形補間を実行しようとしています。Pythonデータフレームの補間

下の例では、製品 "a"と "b"の測定値を、補間の高さ列の関連するセルの実際の数値を使用して補間したいとします。 Height列を補間の指標と呼ぶことができますか?

製品aの欠落した測定値を補間するとき、補間に使用するインデックス値は4,5,7です。プロダクト "b"の補間では、使用するインデックス値は1,2,2,3です。

私はdataframe.interpolate()について知っていますが、正しいインデックス値を使用するようにコードを修正しようとしています。ここで

私が始まる午前データフレームのためのコードです:

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 

enter image description here

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 

testdata1

そして、ここでは、私が必要とするデータフレームのコードです

これをデータフレームで行うことができない場合、私はoですPythonでそれを行うための他のアイデアへのペン。

ご協力いただきまして誠にありがとうございます。私はPythonが初めてです。ありがとうございました。

あなたが最初にいくつかのデータクリーニングに使用することができます

答えて

1

:、interpolate

#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カスタム関数を最後reset_indexreindexによって、列の元の順序を取得:

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 
+0

ありがとうございました。これは完全に動作します! – Jdoe

+0

あなたは大歓迎です!素敵な週末! – jezrael

+0

リセットインデックスについて説明し、コードの一部を再インデックスできますか?それは私に100%明らかではありません。ありがとう – Jdoe