gpt4 book ai didi

python - 寻找不等长列表之间的最小可能差异

转载 作者:行者123 更新时间:2023-11-28 20:13:25 24 4
gpt4 key购买 nike

我有一个包含两列 AB 的数据框,其中包含列表:

import pandas as pd

df = pd.DataFrame({"A" : [[1,5,10], [], [2], [1,2]],
"B" : [[15, 2], [], [6], []]})

我想构造第三列C,它的定义等于AB< 中列表元素之间的最小可能差异 如果它们非空,如果其中一个或两个都为空则为 0。

对于第一行,最小的差异是 1(我们取绝对值..),对于第二行,由于列表是空的,它是 0,第三行是 4,第四行又是 0,因为一个空列表,所以我们最终得到:

df["C"] = [1, 0, 4, 0]

最佳答案

这不容易向量化,因为您有 object dtype 系列列表。您可以将列表理解与 itertools.product 一起使用:

from itertools import product

zipper = zip(df['A'], df['B'])
df['C'] = [min((abs(x - y) for x, y in product(*vals)), default=0) for vals in zipper]

# alternative:
# df['C'] = [min((abs(x - y) for x, y in product(*vals)), default=0) \
# for vals in df[['A', 'B']].values]

print(df)
# A B C
# 0 [1, 5, 10] [15, 2] 1
# 1 [] [] 0
# 2 [2] [6] 4
# 3 [1, 2] [] 0

关于python - 寻找不等长列表之间的最小可能差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54114385/

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