gpt4 book ai didi

python - 在每一行都有多个值的 Pandas 列中查找唯一值

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

我在 dataframe 中有以下列,其中包含由 | 分隔的颜色

df = pd.DataFrame({'x': ['RED|BROWN|YELLOW', 'WHITE|BLACK|YELLOW|GREEN', 'BLUE|RED|PINK']})

我想从列中找到所有独特的颜色。

预期输出:

{'YELLOW', 'BLACK', 'RED', 'BLUE', 'BROWN', 'GREEN', 'WHITE', 'PINK'}

我不介意它是list还是set

我尝试过的:

df['x'] = df['x'].apply(lambda x: x.split("|"))

colors = []
for idx, row in df.iterrows():
colors.extend(row['x'])

print(set(colors))

哪个工作正常,但我正在寻找更有效的解决方案,因为我有大型数据集。

最佳答案

使用itertools (这可以说是扁平化列表中最快的)与 set;

import itertools
set(itertools.chain.from_iterable(df.x.str.split('|')))

输出:

{'BLACK', 'BLUE', 'BROWN', 'GREEN', 'PINK', 'RED', 'WHITE', 'YELLOW'}

使用 functools 的另一种可能的解决方案几乎与 itertools 一样快:

import functools
import operator
set(functools.reduce(operator.iadd, df.x.str.split('|'), []))

注意您还可以使用sum(),它看起来可读但速度不那么快。

关于python - 在每一行都有多个值的 Pandas 列中查找唯一值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55331672/

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