gpt4 book ai didi

pandas - 断言一个整数在 Pandas 系列的列表中

转载 作者:行者123 更新时间:2023-12-04 04:15:01 24 4
gpt4 key购买 nike

我有一个包含两个 pandas 系列的 DataFrame,如下所示:

     value accepted_values
0 1 [1, 2, 3, 4]
1 2 [5, 6, 7, 8]

我想使用 pandas 方法有效地检查该值是否在 accepted_values 中。

我已经知道我可以做类似下面的事情,但如果有的话,我对更快的方法感兴趣(在 100 万行 DataFrame 上花费了大约 27 秒)

import pandas as pd

df = pd.DataFrame({"value":[1, 2], "accepted_values": [[1,2,3,4], [5, 6, 7, 8]]})

def check_first_in_second(values: pd.Series):
return values[0] in values[1]

are_in_accepted_values = df[["value", "accepted_values"]].apply(
check_first_in_second, axis=1
)

if not are_in_accepted_values.all():
raise AssertionError("Not all value in accepted_values")

最佳答案

我想如果用列表列创建DataFrame,你可以通过DataFrame.eq进行比较并通过 DataFrame.any 测试每行是否至少匹配一个值:

df1 = pd.DataFrame(df["accepted_values"].tolist(), index=df.index)
are_in_accepted_values = df1.eq(df["value"]).any(axis=1).all()

另一个想法:

are_in_accepted_values = all(v in a for v, a in df[["value", "accepted_values"]].to_numpy())

关于pandas - 断言一个整数在 Pandas 系列的列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60887704/

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