2016-10-20 10 views
1

エントリに基づいて除算を実行するデータフレームがあります。問題を説明するために、私は、次のデータフレームを持っていると言う:パンダのデータフレームで行を分割する方法

import pandas as pd 

df= pd.DataFrame([[1.,2.,3.,4.], [5.,6.,7.,8.], [9.,10.,11.,12.]], 
        columns=['A','B','C','D'], index=['x','y','z']) 

だから私はdfとして、以下の取得:

A B C D 
x 1 2 3 4 
y 5 6 7 8 
z 9 10 11 12 

私は何をしたいことは、列Dの各値が変更され、どのくらい見ています私がxからyへ、そしてzからzへ行くにつれて。

私が取得したいデータフレームは次のようになります。

A B C D 
x 1 2 3 NaN 
y 5 6 7 2.0 
z 9 10 11 1.5 

私は体系的な方法でこれを行うにはどうすればよいですか?

答えて

1

あなたがpct_change()を使用することができます。

In [57]: df.D.pct_change() + 1 
Out[57]: 
x NaN 
y 2.0 
z 1.5 
Name: D, dtype: float64 

やDF(オンザフライ)など:

In [58]: df.assign(D=df.D.pct_change() + 1) 
Out[58]: 
    A  B  C D 
x 1.0 2.0 3.0 NaN 
y 5.0 6.0 7.0 2.0 
z 9.0 10.0 11.0 1.5 
2

あなたが列shift EDでdivを使用することができます。

In [21]: 
df['D'] = df['D'].div(df['D'].shift()) 
df 

Out[21]: 
    A B C D 
x 1 2 3 NaN 
y 5 6 7 2.0 
z 9 10 11 1.5 

かより簡潔に:

In [23]: 
df['D'] /= df['D'].shift() 
df 

Out[23]: 
    A B C D 
x 1 2 3 NaN 
y 5 6 7 2.0 
z 9 10 11 1.5