如何用0、1列表在Pandas中筛选DataFrame列?
Pandas依据二进制列表筛选列的实现方法
直接给你两种实用的实现方式,都能满足你的需求:
方法一:列表推导式匹配列名
先通过列表推导式筛选出binary_list中对应值为1的列名,再从DataFrame中提取这些列:
import pandas as pd # 示例数据 df = pd.DataFrame({'a': [1,2,3], 'b': [4,5,6], 'c': [7,8,9]}) binary_list = [0,1,0] # 筛选目标列名 selected_columns = [col for col, flag in zip(df.columns, binary_list) if flag == 1] # 提取对应列 filtered_df = df[selected_columns]
方法二:布尔索引快速筛选
利用numpy将二进制列表转为布尔数组,直接通过布尔索引筛选列,代码更简洁:
import pandas as pd import numpy as np # 示例数据 df = pd.DataFrame({'a': [1,2,3], 'b': [4,5,6], 'c': [7,8,9]}) binary_list = [0,1,0] # 转布尔数组后直接索引列 filtered_df = df.loc[:, np.array(binary_list).astype(bool)]
两种方法最终都会得到只包含b列的DataFrame,你可以根据习惯选择使用。
内容的提问来源于stack exchange,提问作者Ibrahim Abed-alghafer
相关产品推荐
相关产品推荐

