You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Pandas根据另一DataFrame的列名筛选目标DataFrame的列?

实现方法与技巧指导

嘿,作为Pandas新手,这个需求其实非常好上手,我来给你一步步拆解实现思路和实用技巧~

核心实现逻辑

你的需求本质是根据指定的列名集合,从原DataFrame中筛选出对应列,核心步骤只有两步:

  1. 从df2中提取需要保留的列名,转成列表格式
  2. 用这个列表去索引原DataFrame df1,得到目标结果

具体代码

# 第一步:把df2里的列名提取成列表
cols_to_keep = df2[0].tolist()

# 第二步:筛选df1的列,生成dfmain
dfmain = df1[cols_to_keep]

运行这段代码后,你就能得到想要的dfmain了。

代码解释

  • df2[0]:因为df2是只有一列的DataFrame,列名是0,这行代码会取出这一列对应的Series(包含count和size两个值)
  • .tolist():把Series转换成普通的Python列表,这样就能直接用于Pandas的列索引
  • df1[cols_to_keep]:Pandas支持直接用列名列表来筛选DataFrame的列,会自动返回只包含这些列的新DataFrame

实用优化技巧

如果想让代码更鲁棒(比如避免df2里出现df1没有的列导致报错),可以加一步列名校验:

# 只保留df1中存在的列名
cols_to_keep = [col for col in df2[0].tolist() if col in df1.columns]
dfmain = df1[cols_to_keep]

另外,也可以用更明确的.loc语法来选列(效果和上面一样,但可读性更强):

dfmain = df1.loc[:, cols_to_keep]

这里的:表示保留所有行,后面的cols_to_keep指定要保留的列。

完整可运行示例

把所有代码放在一起,你可以直接复制运行测试:

import pandas as pd

# 初始化df1
df1 = pd.DataFrame({
    'Color': ['Red', 'Blue'],
    'count': [2, 1],
    'size': ['med', 'large'],
    'price': [5, 10]
})

# 初始化df2
df2 = pd.DataFrame({0: ['count', 'size']})

# 提取目标列名并筛选
cols_to_keep = df2[0].tolist()
dfmain = df1[cols_to_keep]

# 打印结果
print(dfmain)

输出结果就是你想要的:

count  size
0      2   med
1      1  large

内容的提问来源于stack exchange,提问作者lee.edward01

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 04:11:06