在数据框中查找多个列表值

Posted

技术标签:

【中文标题】在数据框中查找多个列表值【英文标题】:find mutlible list values inside a dataframe 【发布时间】:2021-12-29 12:46:44 【问题描述】:

我有一个list 名称为list_1,如下所示:

[["xx ",'yy']
[["gg ",'xx']
[["xx ",'gg']]

另外,我有一个像这样的df

  column1  column2............ coulymn_N
0  xx        gg                 gg
1  gg        xx                 yy
2  xx        something else     nan

我想将list_1逐行搜索到df中并返回匹配项

例如,df 中第一行 list_1 的输出可能是

  column1  
0  xx 

还有

  column_N
1   yy

我遇到的问题是,在我的list 中,我有多个值("xx ","yy"),所以我很困惑。我不认为我可以使用isin 方法。

有什么想法吗?

【问题讨论】:

您好,我不明白您的问题。看看***.com/questions/20109391/… 【参考方案1】:

假设你有一个类似的列表:

list_of_lists = [["xx", "yy"], ["gg", "xx"], ["xx", "gg"]]

还有一个像这样的熊猫数据框:

import pandas as pd

df = pd.DataFrame(
    
        "column1": ["xx", "yy", "aa"],
        "column2": ["yy", "gg", "aa"],
        "column3": ["gg", "aa", "hh"],
    
)

然后,您可以遍历 list_of_lists 中的每个 sub_list,并检查 sub_list 的每个项目是否存在于数据框的任何列中。在这种情况下,您可以打印结果:


for sub_list in list_of_lists:
    print("\n")
    print("Sub_list: ", sub_list)
    for item in sub_list:
        for col in df.columns:
            if item in df[col].values:
                print(df[col][df[col] == item].to_frame())

上面将打印以下内容:

Sub_list:  ['xx', 'yy']
  column1
0      xx
  column1
1      yy
  column2
0      yy


Sub_list:  ['gg', 'xx']
  column2
1      gg
  column3
0      gg
  column1
0      xx


Sub_list:  ['xx', 'gg']
  column1
0      xx
  column2
1      gg
  column3
0      gg

【讨论】:

你能解释一下最后一行 print(dfcc[col][dfcc[col] == item].to_frame()) 尤其是这个 df[col][df[col]?跨度> [df[col] == item] 选择列col 的值等于item 的那些实例,例如xx。之前的df[col] 仅选择列col。因此,例如,如果我们位于项目 xxcol column1,它将找到 column1 等于 xx(项目)的那些行。在所有这些行中,我们只需要 column1df[col] 的值。

以上是关于在数据框中查找多个列表值的主要内容,如果未能解决你的问题,请参考以下文章

如何使用pyspark将具有多个可能值的Json数组列表转换为数据框中的列

在列表框中选择多个值

ACCESS VBA 从列表框中选择多个值并执行查询名称

将列表中具有零值的多个列添加到 Pandas 数据框中

在列表中查找多个值并在新工作表中对它们进行排序

如何在熊猫数据框中使用列表作为值?