簡體   English   中英

檢查列表中的元素是否存在於 Pandas 列中,該列的元素也是列表

[英]check if an element from list is present in Pandas column whose elements is also list

您好,我有一個列表和一個 pandas dataframe,其元素也是列表。 我想查明 pandas 列列表中的任何一個元素是否存在於另一個列表中,並創建一個列,如果找到則為 1,如果未找到則為 0,而另一列的找到的元素為由,分隔的字符串。 我發現了一個類似的問題,但無法理解如何將它用於這里的案例。 檢查列表的一個或多個元素是否出現在 Pandas 列中 非常感謝你: :)

letters = ['a', 'b', 'c', 'f', 'j']
df_temp = pd.DataFrame({'letters_list' : [['a','b','c'], [ 'd','e','f'], ['g','h','i'], ['j','h','i']]})

在此處輸入圖像描述

如果在letters_list中找到列表letters中的任何字母,我如何創建一個新列found為 1 ,以及另一列letters_found輸出列表中匹配的字母作為由,分隔的字符串? 它想跟隨。

在此處輸入圖像描述

你需要在這里使用一個循環。

使用set.intersection使letters成為一個set ,以便有效地測試公共元素並使用列表理解。 然后通過將“letters_found”設置為 boolean(空字符串變為False ,rest True )並轉換為int以具有 0/1 來檢查是否找到任何字母。

letters = set(['a', 'b', 'c', 'f', 'j'])

df_temp['letters_found'] = [','.join(sorted(letters.intersection(l))) 
                            for l in df_temp['letters_list']]
df_temp['found'] = df_temp['letters_found'].astype(bool).astype(int)

output:

  letters_list letters_found  found
0    [a, b, c]         a,b,c      1
1    [d, e, f]             f      1
2    [g, h, i]                    0
3    [j, h, i]             j      1

暫無
暫無

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

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