如何从字符串类型的嵌套列表中提取唯一值?

2024-04-29 04:57:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我在下面列出了作为字符串的嵌套列表:

L1 = ["['32', '54', '139', '195', 'NR6', 'NR7']", "['32', '54', '139', '195', 'NR6', 'NR7']", "['32', '54', '139', '195', 'NR1', 'NR2', 'NR3', 'NR5', 'N
    R6', 'NR7', 'NR8']", "['32', '54', '139', '195', 'NR1', 'NR2', 'NR5', 'NR6', 'NR7', 'NR8']"]

这里L1是:

^{pr2}$

这里的每个嵌套列表都是使用tolist()函数从pandas dataframe df中提取的,因此原始数据框的数据如下:

column_Name
['32', '54', '139', '195', 'NR6', 'NR7']
['32', '54', '139', '195', 'NR6', 'NR7']
['32', '54', '139', '195', 'NR1', 'NR2', 'NR3', 'NR5', 'NR6', 'NR7', 'NR8']
...
...

我想在删除所有重复项后,将L1所有嵌套列表中的所有数据点联接起来。我尝试过使用sum(L1,[]),但它不起作用,因为这里所有的嵌套列表都是字符串。为什么tolist函数在这里返回字符串列表而不是列表列表?有没有更好的方法从dataframe列的直接上方的选定行中获取唯一的数据?在


Tags: 数据函数字符串l1dataframe列表r6tolist
1条回答
网友
1楼 · 发布于 2024-04-29 04:57:33

我想你可以用:

L = df['Column_Name'].apply(ast.literal_eval).tolist()

^{pr2}$

然后做flatten list

a = [item for sublist in L for item in sublist])

上次转换为唯一列表的set

b = list(set(a))
print (b)
['NR7', '32', '195', '139', '54', 'NR1', 'NR2', 'NR3', 'NR6', 'NR5', 'NR8']

另一个只有熊猫的解决方案:

b = df['Column_Name'].str.split(", ", expand=True).stack().str.strip("[]'").unique().tolist()
print (b)
['32', '54', '139', '195', 'NR6', 'NR7', 'NR1', 'NR2', 'NR3', 'NR5', 'NR8']

相关问题 更多 >