2017-01-05 2 views
1

私は通常、この形式で、PDのデータフレームを持っている:Pythonのパンダでは、どのようにしてDataFrameを再サンプリングして補間できますか?

1  2   3   4 
0.1100 0.0000E+00 1.0000E+00 5.0000E+00 
0.1323 7.7444E-05 8.7935E-01 1.0452E+00 
0.1545 4.3548E-04 7.7209E-01 4.5432E-01 
0.1768 1.2130E-03 6.7193E-01 2.6896E-01 
0.1990 2.5349E-03 5.7904E-01 1.8439E-01 
0.2213 4.5260E-03 4.9407E-01 1.3771E-01 

される私は何をしたいので表さ例えば、リストから列1(インデックス)値を再サンプル:

indexList = numpy.linspace(0.11, 0.25, 8) 

次に、2,3,4桁目の値を入力DataFrameから線形補間する必要があります(これは常に私が再サンプル/再インデックスするカラム1のみです)。また、必要に応じて外挿してmin/max私のリストの値が必ずしも既存のカラム1(インデックス)内にあるとは限りません。しかし、重要な点は補間部分です。私は、Pythonに非常に新しいですが、私はこのようなアプローチを使用して考えていた:

  1. output_df = DataFrame.reindex(= indexListがインデックス) - これは主にはNaNの列2-4のために私を与えるだろう。インデックスの
  2. 、output_df.iterrowsの行()Iがなければならないようにどういうわけか、それが感じ


「 データフレームから補間/外挿された値を計算し、正しい行/列にそれらを挿入する機能」 .interpolate機能を使用することができますが、私はどのように把握できません。私はそれを簡単に使用することはできません - それは2列目から4列目で言及されているように再索引付け後の私のエントリーのほとんどがNaNのものであるため、あまりにも不正確になります。補間は、私の最初のDataFrameの2つの最も近い値の中で行う必要があります。良いヒント誰ですか? (フォーマットとインテンシヴが不明な場合は教えてください...)

答えて

4

列1がインデックスにあると仮定すると、作成したリストとともに元の値でデータフレームを再インデックス化し、次に補間することができますナンを記入してください。

df1 = df.reindex(df.index.union(np.linspace(.11,.25,8))) 
df1.interpolate('index') 

       2   3   4 
0.1100 0.000000 1.000000 5.000000 
0.1300 0.000069 0.891794 1.453094 
0.1323 0.000077 0.879350 1.045200 
0.1500 0.000363 0.793832 0.574093 
0.1545 0.000435 0.772090 0.454320 
0.1700 0.000976 0.702472 0.325482 
0.1768 0.001213 0.671930 0.268960 
0.1900 0.001999 0.616698 0.218675 
0.1990 0.002535 0.579040 0.184390 
0.2100 0.003517 0.537127 0.161364 
0.2213 0.004526 0.494070 0.137710 
0.2300 0.004526 0.494070 0.137710 
0.2500 0.004526 0.494070 0.137710 
+0

これは私の問題を本当に解決しました。それは補間をはるかに正確にするので、トリックを行う.unionです。私の目標は最終的に私のリストの新しいインデックス値だけを持つことだったので、最後にdf1 = df1.reindex(index = indexList)を追加して私の最初のインデックスを取り除いた。 – Marius

関連する問題