【问题标题】:How do I filter a DataFrame column that includes ALL values in a list?如何过滤包含列表中所有值的 DataFrame 列?
【发布时间】:2021-11-06 18:27:47
【问题描述】:

例如,列包含完整的产品描述(例如黄色皮革运动鞋),我想根据列表选择列(例如 ['yellow', 'sneaker'])。我尝试过这样的事情,但显然它不起作用:)

list_to_check = ['yellow', 'sneaker']
df_filtered = df(all(n in df['Column_To_Filter'] for n in list_to_check))

新的 df_filtered 应该只包含列表中所有单词都包含在列的同一行值中的行(例如,如果该列仅包含一个单词,我不希望显示该列? )

有什么想法吗?

提前致谢!

【问题讨论】:

    标签: python list dataframe filter


    【解决方案1】:

    试试:

    list_to_check = ["yellow", "sneaker"]
    df_filtered = df[
        df["Column_To_Filter"].apply(lambda x: all(n in x for n in list_to_check))
    ]
    print(df_filtered)
    

    打印:

             Column_To_Filter
    0  yellow leather sneaker
    

    df 已使用:

             Column_To_Filter
    0  yellow leather sneaker
    1                  yellow
    

    【讨论】:

      【解决方案2】:

      或者尝试使用正则表达式str.contains:

      df.loc[df['Column_To_Filter'].str.contains(f'(?={")(?=.*".join(list_to_check)})')]
      

      使用@AndrejKesely 的输入数据输出:

               Column_To_Filter
      0  yellow leather sneaker
      

      【讨论】:

        猜你喜欢
        • 2015-11-23
        • 1970-01-01
        • 2020-02-17
        • 2020-09-22
        • 2020-11-29
        • 2017-06-03
        • 2017-08-15
        • 2021-02-15
        • 2018-08-07
        相关资源
        最近更新 更多