gpt4 book ai didi

python - Pandas 将一列列表中的项目与另一列中的单个值进行比较

转载 作者:行者123 更新时间:2023-12-04 12:37:28 26 4
gpt4 key购买 nike

考虑这两列 df。我想创建一个应用函数,将“other_yrs”列列表中的每个项目与“cur”列中的单个整数进行比较,并保留“other_yrs”列列表中大于或等于“cur”列中的单个值。我无法弄清楚如何使 Pandas 能够通过应用来做到这一点。我将应用函数用于其他目的,它们运行良好。任何想法将不胜感激。

    cur other_yrs
1 11 [11, 11]
2 12 [16, 13, 12, 9, 9, 6, 6, 3, 3, 3, 2, 1, 0]
4 16 [15, 85]
5 17 [17, 17, 16]
6 13 [8, 8]

下面是我用来将值提取到“other_yrs”列中的函数。我在想我可以通过某种方式将列表中的每个连续值与“当前”列值进行比较并继续计数,然后插入此函数。我真的只需要存储有多少列表项 <= "cur"列中的值。

def col_check(col_string):
cs_yr_lst = []
count = 0
if len(col_string) < 1: #avoids col values of 0 meaning no other cases.
pass
else:
case_lst = col_string.split(", ") #splits the string of cases into a list
for i in case_lst:
cs_yr = int(i[3:5]) #gets the case year from each individual case number
cs_yr_lst.append(cs_yr) #stores those integers in a list and then into a new column using apply
return cs_yr_lst

预期的输出是这样的:

  cur other_yrs    count
1 11 [11, 11] 2
2 12 [16, 13, 12, 9, 9, 6, 6, 3, 3, 3, 2, 1, 0] 11
4 16 [15, 85] 1
5 17 [17, 17, 16] 3
6 13 [8, 8] 2

最佳答案

在列表理解中使用 zip 来压缩列 curother_yrs 并使用 np.sum bool 掩码:

df['count'] = [np.sum(np.array(b) <= a) for a, b in zip(df['cur'], df['other_yrs'])]

另一个想法:

df['count'] = pd.DataFrame(df['other_yrs'].tolist(), index=df.index).le(df['cur'], axis=0).sum(1)

结果:

   cur                                   other_yrs  count
1 11 [11, 11] 2
2 12 [16, 13, 12, 9, 9, 6, 6, 3, 3, 3, 2, 1, 0] 11
4 16 [15, 85] 1
5 17 [17, 17, 16] 3
6 13 [8, 8] 2

关于python - Pandas 将一列列表中的项目与另一列中的单个值进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63057534/

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