如何在Python中无需使用for循环,通过列值与列表匹配筛选DataFrame行
用Pandas快速筛选匹配列表值的DataFrame行
嘿,这事儿超简单的,咱们直接用Pandas内置的isin()方法就能搞定,完全不需要写for循环,而且这是矢量化操作,处理大数据量的时候比循环高效太多啦!
完整实现代码
import pandas as pd my_list = ["a", "b", "d"] d = {'col1': [1, 2, 3, 4], 'col2': ["a", "b", "c", "d"]} df = pd.DataFrame(data=d) # 核心的筛选逻辑就在这一行 filtered_df = df[df['col2'].isin(my_list)] print(filtered_df)
运行结果
col1 col2 0 1 a 1 2 b 3 4 d
简单解释下原理
df['col2'].isin(my_list)会生成一个布尔类型的Series,它会逐一检查col2里的每个值是否存在于my_list中,对应的结果是[True, True, False, True]- 把这个布尔Series作为索引传入原DataFrame(也就是
df[布尔Series]),Pandas会自动保留所有标记为True的行,刚好就是你想要的结果。
内容的提问来源于stack exchange,提问作者edn
相关产品推荐
相关产品推荐

