2017-01-09 6 views
2

私は3D測定(約27k行)のデータを持つパンダのデータフレームを持っています。私はすでに3つの座標列(x、y、z)からなるマルチインデックスを作成しました。データは、(y方向に沿って複数のX-Z面)のようになり:ここパンダのデータフレーム減算の断面

        Analog 1 
Position Y Position X Position Z   
    y0   x0   z0  value0 
    y0   x0   z1  value1 
    y0   x0   z2  value2 
    y0   x1   z0  value3 
    y0   x1   z1  value4 
    y0   x1   z2  value5 
    y1   x0   z0  value6 
    y1   x0   z1  value7 
    y1   x0   z2  value8 
    y1   x1   z0  value9 
    y1   x1   z1  value10 
    y1   x1   z2  value11 

は一例である:私はクロスの値を減算する次のステップにおいてsample data

他のすべてのxz平面からのy=y0のセクション/スライスでデータを正規化します。現在、すべての行をループしています:

for row in data.itertuples(): 
    ind = row[0] 
    value = row[1] 
    ref = data["Analog 1"].ix[(y0, ind[1], ind[2])] 
    data["Analog 1"].ix[ind] = value - ref 

もっとエレガントな方法がありますか?

それは列としてインデックス値を復元した後、興味のある行からのすべての行を減算する subを呼び出すためにIMO reset_indexに容易であろう
+0

を私の答えはあなたの質問が解決した場合、あなたはそれを受け入れることができ、私の答えの左上に空の目盛りがあるだろう、これはそうです質問は答えられないままではありません – EdChum

答えて

3

In [65]: 
df = df.reset_index() 
df.sub(df[df['Position Y'] == -27.0].iloc[0], axis=1) 

Out[65]: 
    Position Y Position X Position Z Analog 1 
0   0.0   0.0   0.0  0.00 
1   0.5   0.0   0.0  0.00 
2   1.0   0.0   0.0  0.00 
3   1.5   0.0   0.0  0.00 
4   2.0   0.0   0.0  -0.02 

注ここでDataFrameもしそうならを返すdf[df['Position Y'] == -27.0]フィルタリングことこれを減算しようとすると、他のすべての行についてはNaNが与えられるので、iloc[0]を使用して最初の唯一の行にインデックスを付けるとSeriesが返され、完全なdfに沿ってブロードキャストされます。

あなたが後でインデックスをバックに設定することができ、必要な場合は、次の

In [80]: 
df = df.reset_index() 
df = df.sub(df[df['Position Y'] == -27.0].iloc[0], axis=1) 
df = df.set_index(df.columns[:3].tolist()) 
df 

Out[80]: 
            Analog 1 
Position Y Position X Position Z   
0.0  0.0  0.0    0.00 
0.5  0.0  0.0    0.00 
1.0  0.0  0.0    0.00 
1.5  0.0  0.0    0.00 
2.0  0.0  0.0   -0.02 
+0

私はインデックス "位置Y" == -27と1つだけの行を持っている場合、それはアプローチになります。しかし、私はy方向に沿って多くのxz面を持っています。私はそれを強調するように問題を修正しました。 – RaJa

+0

あなたの質問を大幅に変更して申し訳ありませんが、この回答を受け入れて新しい質問をする必要があります。この場合、最終的なdfがどのように見えるのか理解できないばかりでなく、複数の行を持つときに列とインデックスを整列させる問題と、それらを差し引く方法も問題になります – EdChum

関連する問題