簡體   English   中英

Python Pandas 將 3 列列表合並為一列

[英]Python Pandas merge 3 columns of lists in to a single column

我有 3 列關鍵字,這些關鍵字是通過不同的算法得出的。

數據是這樣的

產品描述關鍵字1 關鍵字2 關鍵字3

productX, "blah blah", [iot, inte.net, cloud], [cloud, inte.net, energy management], [inte.net of things, cloud, inte.net]

如何將 3 個關鍵字列合並為一個列並刪除所有重復項,例如關鍵字“cloud”應該只存儲一次?

使用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]

您可以將 function 應用於在三列之間設置交集的數據框。

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 ,盡管對於此類任務來說可能有些矯枉過正。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM