gpt4 book ai didi

python - 根据数据框列的部分添加一列规范化值

转载 作者:太空宇宙 更新时间:2023-11-04 11:16:13 24 4
gpt4 key购买 nike

我有一个包含数十万行的数据框。格式如下:

   time_elapsed  cycle
0 0.00 1
1 0.50 1
2 1.00 1
3 1.30 1
4 1.50 1
5 0.00 2
6 0.75 2
7 1.50 2
8 3.00 2

我想创建第三列,它会给出该行属于周期的每个时间实例的百分比(直到下一个 time_elapsed = 0)。给出类似的东西:

   time_elapsed  cycle  percentage
0 0.00 1 0
1 0.50 1 33
2 1.00 1 75
3 1.30 1 87
4 1.50 1 100
5 0.00 2 0
6 0.75 2 25
7 1.50 2 50
8 3.00 2 100

我对小数位数并不在意,我只是在这里为了方便而将它们排除在外。

我开始沿着这条路线前进,但我不断遇到错误。

data['percentage'] = data['time_elapsed'].sub(data.groupby(['cycle'])['time_elapsed'].transform(lambda x: x*100/data['time_elapsed'].max()))

我认为是 lambda 函数导致了错误,但我不确定应该如何更改它。非常感谢任何帮助:)

最佳答案

使用Series.div用于除法而不是 sub 用于减法,然后解决方案是简化 - 每组仅获取 max,乘以 Series.mul , 如有必要 Series.round最后通过 Series.astype 转换为整数:

s = data.groupby(['cycle'])['time_elapsed'].transform('max')
data['percentage'] = data['time_elapsed'].div(s).mul(100).round().astype(int)
print (data)
time_elapsed cycle percentage
0 0.00 1 0
1 0.50 1 33
2 1.00 1 67
3 1.30 1 87
4 1.50 1 100
5 0.00 2 0
6 0.75 2 25
7 1.50 2 50
8 3.00 2 100

关于python - 根据数据框列的部分添加一列规范化值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56952499/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com