![](/img/trans.png)
[英]How to check if elements of a list of strings in a pandas column are present in another column
[英]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.