【问题标题】:pandas:output differences between two columns of lists of stringspandas:输出两列字符串列表之间的差异
【发布时间】:2021-09-14 08:18:32
【问题描述】:

我有一个包含两列的数据框,如下所示:

df = pd.DataFrame({'pos_1':[['VERB', 'PRON', 'DET', 'NOUN', 'ADP'],['NOUN', 'PRON', 'DET', 'NOUN', 'ADV', 'ADV']],
               'pos:2':[['VERB', 'PRON', 'DET', 'NOUN', 'ADP'],['VERB', 'PRON', 'DET', 'NOUN', 'ADV', 'ADV']]})

我正在尝试使用 apply 输出这两列之间的差异。

df['diff'] = df.apply(lambda x: [i for i in x['pos_1'] if i not in x['pos_2']], axis=1)

我想要的 diff 列输出应该是:

diff
1 []
2 ['NOUN','VERB']

但是我在 diff 列中得到了两个空列表。我不知道我做错了哪一部分

【问题讨论】:

    标签: python pandas string list difference


    【解决方案1】:

    如果需要比较两个列表元素并返回差异,请使用zip 比较每对,最后通过嵌套列表理解将其展平:

    f = lambda x: [z for i, j in zip(x['pos_1'],x['pos_2']) if i != j for z in [i, j]]
    df['diff'] = df.apply(f, axis=1)
    print (df)
    
                                   pos_1                              pos_2  \
    0       [VERB, PRON, DET, NOUN, ADP]       [VERB, PRON, DET, NOUN, ADP]   
    1  [NOUN, PRON, DET, NOUN, ADV, ADV]  [VERB, PRON, DET, NOUN, ADV, ADV]   
    
               diff  
    0            []  
    1  [NOUN, VERB]  
    

    【讨论】:

    • 感谢您的回复。有没有办法查看两个差异['NOUN','VERB'],或者更好地说输出任何不同的东西
    猜你喜欢
    • 1970-01-01
    • 2010-11-27
    • 2021-02-04
    • 2021-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-10
    • 1970-01-01
    相关资源
    最近更新 更多