我有一个数据框,我希望根据条目执行除法。为了说明问题,请说我有以下数据框:
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时变化了多少。
我得到的数据框将是:
A B C D
x 1 2 3 NaN
y 5 6 7 2.0
z 9 10 11 1.5
我如何以系统的方式做到这一点?
答案 0 :(得分:2)
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
答案 1 :(得分: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