我正在尝试从数据框中计算 first down 的百分比。
这是数据框
down distance
1 1.0 10.0
2 2.0 13.0
3 3.0 15.0
4 3.0 20.0
5 4.0 1.0
6 1.0 10.0
7 2.0 9.0
8 3.0 3.0
9 1.0 10.0
我想计算第一次倒地的百分比,这意味着第二次倒地时,获得的码数百分比是多少。对于第三次倒数,第三次的百分比基于第一次。
例如,我想要以下输出。
down distance percentage
1 1.0 10.0 NaN
2 2.0 13.0 (13-10)/13
3 3.0 15.0 (15-10)/15
4 3.0 20.0 (20-10)/20
5 4.0 1.0 (1-10)/20
6 1.0 10.0 NaN # New calculation
7 2.0 9.0 (9-10)/9
8 3.0 3.0 (3-10)/3
9 1.0 10.0 NaN
谢谢
第一个问题的当前解决方案都可以正常工作。
最佳答案
这是一个矢量化的解决方案:
# define condition
cond = df['down'] == 1
# calculate value to subtract
first = df['distance'].where(cond).ffill().mask(cond)
# perform calculation
df['percentage'] = (df['distance'] - first) / df['distance']
print(df)
down distance percentage
1 1.0 10.0 NaN
2 2.0 13.0 0.230769
3 3.0 15.0 0.333333
4 3.0 20.0 0.500000
5 4.0 1.0 -9.000000
6 1.0 10.0 NaN
7 2.0 9.0 -0.111111
8 3.0 3.0 -2.333333
9 1.0 10.0 NaN
关于python - Pandas 根据不同的值移位来计算百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51777429/