python - Pandas 根据不同的值移位来计算百分比

标签 python pandas dataframe

我正在尝试从数据框中计算 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/

相关文章:

python - 将整数转换为给定字母表上的字符串的算法

python - 如何使用 AsyncPG 捕获 SQL 错误?

python - 在python中将整数转换为二进制并比较位

python - 即使连接关闭,Pandas read_sql_query 仍在后台运行?

python - 如何在 Python 中查找组内每一行的加权百分位数?

python - 如何处理 pandas 条形图中烦人的间隙

python - 仅包含 np 数组的一列上的 Pandas 相关性

python - 将二维 numpy 数组转换为数据帧行

python - pandas - 重新采样日期时间索引并扩展到月底

python - Pandas 在对行进行操作后重置索引