我有3列关键字已经通过不同的算法派生出来。
数据是这样的
产品desc keywords1 keywords2 keywords3
productX,“诸如此类”,物联网,互联网,云,云,互联网,能源管理,物联网,云,互联网
如何将3关键字列合并到一个单独的关键字列中,并删除任何重复的关键字,例如,关键字"cloud“应该只存储一次?
发布于 2021-01-13 22:09:54
使用set()
import pandas as pd
df = pd.DataFrame({'c1':[['a', 'c']], 'c2':[['a', 'd']]})
df['c3'] = (df['c1'] + df['c2']).apply(set).apply(list)
df
c1 c2 c3
0 [a, c] [a, d] [d, a, c]
发布于 2021-01-13 22:16:38
您可以将一个函数应用于数据框架,该数据框架可以设置三列之间的相交。
df['updatedKeywords'] = df.apply(lambda row: set(row['keyword1']) & set(row['keyword2'] & set(row['keyword3']), axis=1)
如果您有很多列要相交,您可以扩展它:
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,尽管它对于这类任务来说可能有些过分。
https://stackoverflow.com/questions/65710332
复制相似问题