如何基于指定值列表创建过滤后的新Pandas DataFrame
筛选DataFrame指定行的实现方法
你可以使用pandas内置的isin()方法快速完成需求,操作如下:
核心代码
new_df = df[df['fruit'].isin(x1)].reset_index(drop=True)
代码说明
df['fruit'].isin(x1)会生成一个布尔序列,fruit列值存在于x1列表中的位置返回True,否则返回False- 用这个布尔序列对原DataFrame做切片,即可筛选出所有符合条件的行
reset_index(drop=True)为可选操作,作用是将新生成的DataFrame的行索引重置为从0开始的连续整数,匹配你给出的预期输出格式;如果需要保留原始行的索引,删除这部分代码即可。
完整复现代码
你可以直接运行以下代码验证效果:
import pandas as pd # 你指定的筛选值数组 x1 = ['apple', 'orange', 'banana'] # 构造原始DataFrame df = pd.DataFrame( data=[ ['apple', True, False], ['pineapple', False, True], ['orange', True, True], ['banana', True, True], ['pear', True, True] ], columns=['fruit', 'foo', 'bar'] ) # 执行筛选 new_df = df[df['fruit'].isin(x1)].reset_index(drop=True) print(new_df)
运行后输出结果和你给出的预期输出完全一致。
内容的提问来源于stack exchange,提问作者Jay
相关产品推荐
相关产品推荐

