如何通过指定列名列表筛选或掩码DF中的所需列?
pandas按指定列名列表筛选列最优解法
pandas原生支持直接通过列名列表批量筛选目标列,仅需一行代码即可完成,不会产生额外的中间数据复制,效率远高于拆分后重建DataFrame的方案。
你需要把固定保留的Item列和你定义的目标日期列列表拼接后传入索引即可:
# 直接筛选得到目标DF new_df = df[["Item"] + myList]
如果担心目标列表中存在DF中没有的列导致报错,可以加一层有效性校验,写法更鲁棒:
# 仅保留实际存在的列,避免索引报错 target_cols = ["Item"] + [col for col in myList if col in df.columns] new_df = df[target_cols]
完整可复现示例
import pandas as pd # 构造示例数据 myList = ["02/12/2021", "01/12/2021","30/11/2021"] df = pd.DataFrame({ "Item": ["x", "y", "z"], "02/12/2021": [10, 2, 4], "01/12/2021": [7, 3, 4], "30/11/2021": [2, 8, 3], "29/11/2021": [10, 1, 5], "28/11/2021": [9, 2, 1] }) # 执行筛选 new_df = df[["Item"] + myList] print(new_df)
运行后输出和期望结果完全一致:
Item 02/12/2021 01/12/2021 30/11/2021 0 x 10 7 2 1 y 2 3 8 2 z 4 4 3
内容的提问来源于stack exchange,提问作者JPWilson
相关产品推荐
相关产品推荐

