将 Pandas 数据框中的行中的元组列表转换为一个元组列表

meu*_*man 1 python tuples list pandas

我有一个 Pandas Dataframe,我想将不同行中的多个元组列表合并到一个元组列表中。数据集有 10 000 多行,我想将所有元组列表添加到一个元组列表中。


InvoiceNo      Description    
534            [(AB, AC), (ACBO, PPK)]
415            [(AD, AT), (CBO, PKD), (CBO, PKA)]
315            [(FDC, ATO), (VBO, IKD), (CVB, PKD)]

Desired output:

Edges =  [(AB, AC), (ACBO, PPK), (AD, AT), (CBO, PKD), (CBO, PKA), (FDC, ATO), (VBO, IKD), (CVB, PKD)]



Run Code Online (Sandbox Code Playgroud)

jez*_*ael 6

将列表理解用于扁平化嵌套元组列表:

Edges = [y for x in df.Description for y in x]
print (Edges)
[('AB', 'AC'), ('ACBO', 'PPK'), ('AD', 'AT'), ('CBO', 'PKD'), 
 ('CBO', 'PKA'), ('FDC', 'ATO'), ('VBO', 'IKD'), ('CVB', 'PKD')]
Run Code Online (Sandbox Code Playgroud)

或者chain.from_iterable为了更好的性能:

from  itertools import chain

Edges = list(chain.from_iterable(df.Description))
print (Edges)
[('AB', 'AC'), ('ACBO', 'PPK'), ('AD', 'AT'), ('CBO', 'PKD'), 
 ('CBO', 'PKA'), ('FDC', 'ATO'), ('VBO', 'IKD'), ('CVB', 'PKD')]
Run Code Online (Sandbox Code Playgroud)