我是Python的新手,我有以下问题。
我有几个问题,我发现自己很难解决。
假设我们有两个熊猫数据框架,我可以从中提取两个列。例如,在一个名为col1的专栏中,我们有可以在同一栏中重复的主题名称,形式如下:“Quentin Tarantino”或“Tarantino Quentin”。在另一栏col2中,我有以下表格的条目:'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']发布于 2017-09-09 14:09:40
除了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))它将消除翻转重复。
它所做的一切,
reversed(list)将返回一个迭代器,因此它应该是一个for循环的主题。rev只保留一个翻转名称的副本,以便在下一步中进行比较。
发布于 2017-09-09 13:32:37
解决这个问题的简单方法是使用set,试试看:因为您需要首先对列表中的所有元素应用较低的
col = list(set( [x.lower().replace(', ',' ') for x in col1]+[x.lower().replace(', ',' ') for x in col2]))https://stackoverflow.com/questions/46131191
复制相似问题