Python 连续列与第一个值之差的数据帧比率
假设我有数据帧(称为Python 连续列与第一个值之差的数据帧比率,python,sql,pandas,dataframe,Python,Sql,Pandas,Dataframe,假设我有数据帧(称为df) 我想要的是构建另一个数据帧,其中包含一个列,该列具有连续列(按列顺序连续)的差值与第一个值的比率 我可以很容易地得到上述比率(分子)的差值 这给了我 'name' 'level_1' 'quantity' 'A' 0 NaN 'A' 1 5 'A' 1 -10 'B' 1 NaN 'B' 2 4
df
)
我想要的是构建另一个数据帧,其中包含一个列,该列具有连续列(按列顺序连续)的差值与第一个值的比率
我可以很容易地得到上述比率(分子)的差值
这给了我
'name' 'level_1' 'quantity'
'A' 0 NaN
'A' 1 5
'A' 1 -10
'B' 1 NaN
'B' 2 4
现在我要的是这个比率,正如描述的那样。具体来说,我想
'name' 'level_1' 'quantity'
'A' 1 NaN
'A' 2 0.5
'A' 3 -0.6666
'B' 1 NaN
'B' 2 2
如何计算?您可以将结果除以df中移位的“数量”列:
diff_df.quantity = diff_df.quantity / df.quantity.shift(1)
执行groupby
后,使用pct\u change
:
# Sort the DataFrame, if necessary.
df = df.sort_values(['name', 'order'])
# Use groupby and pcnt_change on the 'quantity' column.
df['quantity'] = df.groupby('name')['quantity'].pct_change()
结果输出:
name order quantity
0 A 1 NaN
1 A 2 0.500000
2 A 3 -0.666667
3 B 1 NaN
4 B 2 2.000000
# Sort the DataFrame, if necessary.
df = df.sort_values(['name', 'order'])
# Use groupby and pcnt_change on the 'quantity' column.
df['quantity'] = df.groupby('name')['quantity'].pct_change()
name order quantity
0 A 1 NaN
1 A 2 0.500000
2 A 3 -0.666667
3 B 1 NaN
4 B 2 2.000000