gpt4 book ai didi

python - 在数据框中查找某些值的索引并将其作为单独的列

转载 作者:行者123 更新时间:2023-11-28 17:26:10 26 4
gpt4 key购买 nike

在以下数据框 DF 中,用户对 Movies 和 Exist 列有不同的值。例如,用户 2 有 10 个值,用户 5 有 9 个值。我希望将 Exist 列的第一个“真”值(相对于用户向量长度)除以用户向量长度的位置与用户 ID 一起放入单独的数据框中:想象这是数据框:

    User    Movie       Exist
0 2 172 False
1 2 2717 False
2 2 150 False
3 2 2700 False
4 2 2699 True
5 2 2616 False
6 2 112 False
7 2 2571 True
8 2 2657 True
9 2 2561 False
10 5 3471 False
11 5 187 False
12 5 2985 False
13 5 3388 False
14 5 3418 False
15 5 32 False
16 5 1673 False
17 5 3740 True
18 5 1693 False

所以目标数据框应该是这样的:

5/10 =0.5
8/9= 0.88


User Location
2 0.5
5 0.88

因为用户 2 的第一个真值在相对索引 5 中(用户 2 向量中的第 5 个值),用户 5 的第一个真值在索引 8 中(用户 5 向量中的第 8 个值)。请注意,我不想要 4 和 17 的实际索引。

最佳答案

选项 1

def first_ratio(x):
x = x.reset_index(drop=True)
i = x.any() * (x.idxmax() + 1.)
l = len(x)
return i / l

df.groupby('User').Exist.apply(first_ratio).rename('Location').to_frame()

User
2 0.500000
5 0.888889
Name: Exist, dtype: float64

选项 2

def first_ratio(x):
v = x.values
i = v.any() * (v.argmax() + 1.)
l = v.shape[0]
return i / l

df.groupby('User').Exist.apply(first_ratio).rename('Location').to_frame()

时机

enter image description here

关于python - 在数据框中查找某些值的索引并将其作为单独的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38861180/

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