如何过滤pandas DF的列连接?[副本]

bnl4lu3b  于 2023-09-29  发布在  其他
关注(0)|答案(1)|浏览(85)

此问题已在此处有答案

Remove rows of dataframe contained in list (without using a loop)(5个答案)
13天前关闭
截至13天前,社区正在审查是否重新讨论这个问题。
如何过滤pandas DF的列连接?
举例来说:

import pandas as pd

data = {'product_name': ['laptop', 'laptop', 'printer', 'tablet', 'desk', 'chair', 'chair', 'chair'],
        'price': [1200, 1000, 150, 300, 450, 200, 100, 120],
        'color': ['white', 'black', 'white', 'black', 'brown', 'red', 'grey', 'black']
        }

df = pd.DataFrame(data)

有一系列的条件:[('laptop', 'black'), ('chair', 'red'), ('chair', 'grey')]
如何过滤它以只返回符合这些条件的行?假设它是一个有很多列的大df,有成千上万的行和成千上万的条件。

vlurs2pr

vlurs2pr1#

首先使用product_namecolor创建一个名为condition的元组列:

df['condition'] = list(zip(df.product_name, df.color))

然后,只需检查此列中包含的元组是否匹配list_of_conditions中列出的任何条件:

list_of_conditions = [('laptop', 'black'), ('chair', 'red'), ('chair', 'grey')]
df[df.condition.isin(list_of_conditions)]

对于您的帖子中提供的示例框架,此片段返回:

product_name    price   color   condition
1   laptop          1000    black   (laptop, black)
5   chair           200     red     (chair, red)
6   chair           100     grey    (chair, grey)

相关问题