[英]Python list comprehensions/ loop for selecting same member in different df columns
我是Python的新手,存在以下问题。
我有几个问题,我自己发现很难解决。
假设我们有两个熊猫数据帧,我可以从中提取两列。 假设在名为col1的一列中,我们具有主题名称,可以在同一列中以以下形式重复:“ QUENTIN TARANTINO”或“ Tarantino Quentin”。 在另一列col2中,我具有以下形式的条目:“ TARANTINO,QUENTIN”或“ Tarantino,Quentin”,也可以重复。
显然,“ TARANTINO,QUENTIN”或“ Tarantino,Quentin”是同一主题,但是是不同的对象!
我想将这两列“合并”为一列,以便同一主题只有一个标签。 我如何使用列表理解(或循环)使其进行报告,以便报告名称(以这种形式:“ TARANTINO,QUENTIN”)及其计数?
col1 = ['QUENTIN TARANTINO', 'BARACK OBAMA', 'QUENTIN TARANTINO', 'CHARLIE CHAPLIN', 'JAMES LEBRON', 'KOBE BRYANT', 'Philippe Wain', 'LE CAM ALBERT', 'ANDREW ROBERTS', 'Obama Barack', 'tarantino quentin']
col2 = ['OBAMA, BARACK', 'CHAIN, GEORGE', 'Phylo, SOPY', 'Losan, Santos']
解决此问题的简单方法是使用set try this:因为您需要首先对列表中的所有元素应用较低的元素
col = list(set( [x.lower().replace(', ',' ') for x in col1]+[x.lower().replace(', ',' ') for x in col2]))
除了Espoir的答案之外,还要执行翻转操作,请运行以下命令:
col = list(set( [x.lower().replace(', ',' ') for x in col1]+[x.lower().replace(', ',' ') for x in col2])) #thanks espoir
for x in col:
rev = [i for i in reversed(x.split())]
if ' '.join(rev) in col:
col.pop(col.index(x))
它将消除col中的翻转重复。
对于它的作用
reversed(list)
将返回一个迭代器,因此它应该是for循环的主题。 rev
只是保留了翻转名称的副本,以便在下一步进行比较。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.