我在下面列出了嵌套列表作为字符串:
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是:
L1 = df['column_name'].tolist()
此处的每个嵌套列表都是使用tolist()函数从pandas数据帧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列直接从选定的行中获取唯一数据?
答案 0 :(得分:0)
我认为你可以使用:
L = df['Column_Name'].apply(ast.literal_eval).tolist()
L = df['Column_Name'].str.strip("[']").str.split("', '").tolist()
print (L)
[['32', '54', '139', '195', 'NR6', 'NR7'],
['32', '54', '139', '195', 'NR6', 'NR7'],
['32', '54', '139', '195', 'NR1', 'NR2', 'NR3', 'NR5', 'NR6', 'NR7', 'NR8']]
然后制作https://github.com/firebase/quickstart-android/issues/83:
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']