如何解决熊猫:两列字符串列表之间的输出差异
我有一个包含两列的数据框,如下所示:
df = pd.DataFrame({'pos_1':[['VERB','PRON','DET','NOUN','ADP'],['NOUN','ADV','ADV']],'pos:2':[['VERB',['VERB','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 列中得到两个空列表。我不知道我做错了哪一部分
解决方法
如果需要比较两个列表的元素明智和返回差异,请使用 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,ADP]
1 [NOUN,ADV,ADV] [VERB,ADV]
diff
0 []
1 [NOUN,VERB]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。