首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Pandas将3列列表合并为一列

Pandas将3列列表合并为一列
EN

Stack Overflow用户
提问于 2021-01-13 21:53:25
回答 2查看 97关注 0票数 0

我有3列关键字已经通过不同的算法派生出来。

数据是这样的

产品desc keywords1 keywords2 keywords3

productX,“诸如此类”,物联网,互联网,云,云,互联网,能源管理,物联网,云,互联网

如何将3关键字列合并到一个单独的关键字列中,并删除任何重复的关键字,例如,关键字"cloud“应该只存储一次?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-01-13 22:09:54

使用set()

代码语言:javascript
运行
复制
import pandas as pd

df = pd.DataFrame({'c1':[['a', 'c']], 'c2':[['a', 'd']]})
df['c3'] = (df['c1'] + df['c2']).apply(set).apply(list)

df
代码语言:javascript
运行
复制
    c1      c2      c3
0   [a, c]  [a, d]  [d, a, c]
票数 2
EN

Stack Overflow用户

发布于 2021-01-13 22:16:38

您可以将一个函数应用于数据框架,该数据框架可以设置三列之间的相交。

代码语言:javascript
运行
复制
df['updatedKeywords'] = df.apply(lambda row: set(row['keyword1']) & set(row['keyword2'] & set(row['keyword3']), axis=1)

如果您有很多列要相交,您可以扩展它:

代码语言:javascript
运行
复制
columnsToIntersect = ['keyword' + str(i) for i in range(numberOfKeywordColumns)]
df['updatedKeywords'] = df.apply(lambda row: set.intersection(*[set(row[x]) for x in columnsToIntersect], axis=1)

最后,您也可以使用pandas.DataFrame.aggregate,尽管它对于这类任务来说可能有些过分。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65710332

复制
相关文章

相似问题

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