python - Pandas :如何获得第一个正数?

标签 python pandas numpy

我有一个像这样的 Pandas 数据框:

name    a    b    c
jack   -10  -6   -10
bill   -6   -3   -5
ray    -3   -12  -9 
pew     4   -23  -2  
shaun   12   3    2  
mitch   3    5    2

我如何制作一个新的数据框,它从每个相应的列(a、b、c)中获取第一个正值,并将该列中的所有值除以该列中选定的第一个正值并存储除法结果代替所有的值。输出应该是这样的

name    a      b      c
jack   -10/4  -6/3   -10/2
bill   -6/4   -3/3   -5/2
ray    -3/4   -12/3  -9/2 
pew     4/4   -23/3  -2/2  
shaun   12/4   3/3    2/2  
mitch   3/4    5/3    6/2

最佳答案

另一种方式:

m=df.set_index('name')
final=m.div(m.mask(m.lt(0)).bfill().iloc[0]).reset_index()

    name     a         b    c
0   jack -2.50 -2.000000 -5.0
1   bill -1.50 -1.000000 -2.5
2    ray -0.75 -4.000000 -4.5
3    pew  1.00 -7.666667 -1.0
4  shaun  3.00  1.000000  1.0
5  mitch  0.75  1.666667  1.0

关于python - Pandas :如何获得第一个正数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56835948/

相关文章:

python - 解析器错误: Unknown string format: 2020_09_01

python - 将数据框列名称从字符串格式更改为日期时间

python - Numpy 数组是否可哈希?

python - 如何在一个 django 模板页面中显示多个 matplotlib 图

python - 从html中提取数组元素

python - 如何恢复logit

python - 带有基于另一列的标记的 Pandas 线图

python - 当兴趣点位于图像边缘时如何裁剪 3D 图像?

python - 为什么比较两个分别包含一个 NumPy 对象的元组会报错?

python - 如何 'unstack'数据框列中的所有列表并成对组合结果?