首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python列表理解/循环用于选择不同df列中的相同成员

Python列表理解/循环用于选择不同df列中的相同成员
EN

Stack Overflow用户
提问于 2017-09-09 13:26:06
回答 2查看 107关注 0票数 0

我是Python的新手,我有以下问题。

我有几个问题,我发现自己很难解决。

假设我们有两个熊猫数据框架,我可以从中提取两个列。例如,在一个名为col1的专栏中,我们有可以在同一栏中重复的主题名称,形式如下:“Quentin Tarantino”或“Tarantino Quentin”。在另一栏col2中,我有以下表格的条目:'TARANTINO,QUENTIN‘或'Tarantino,Quentin',这些条目也可以重复。

显然,‘塔伦蒂诺,昆汀’或‘塔伦蒂诺,昆汀’是相同的主题,但是不同的对象!

我想在一列中“合并”这两列,以便同一个主题只有一个标签。如何使用列表理解(或循环)来报告名称(以这种形式:'TARANTINO,QUENTIN')和计数?

代码语言:javascript
复制
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']
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-09-09 14:09:40

除了Espoir的回答之外,为了处理翻转,运行以下命令:

代码语言:javascript
复制
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))

它将消除翻转重复。

它所做的一切,

  1. 在上面迭代。
    1. 生成每个名称的反向列表。
    2. 检查连接反向名称是否已经存在。
      1. 如果是,则将其从列表中删除。

reversed(list)将返回一个迭代器,因此它应该是一个for循环的主题。rev只保留一个翻转名称的副本,以便在下一步中进行比较。

票数 1
EN

Stack Overflow用户

发布于 2017-09-09 13:32:37

解决这个问题的简单方法是使用set,试试看:因为您需要首先对列表中的所有元素应用较低的

代码语言:javascript
复制
col = list(set( [x.lower().replace(', ',' ') for x in col1]+[x.lower().replace(', ',' ') for x in col2]))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46131191

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档