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

如何通过首行含'Jack'子串筛选DataFrame列(不使用列名)

需求说明

需要筛选DataFrame的列,但不依赖列名,而是基于第0行(数据首行)中包含"Jack"子串的列进行筛选。当前已有通过指定列名实现的代码,需修改为按行内容筛选的方式。

原实现代码

import pandas as pd
data = [
    ["A","Jack 001","Alice xyz","John","Jack xxx"],
    ["B",0,2,3,4],
    ["C",2,4,5,6],
    ["D",3,1,4,5]
]

df = pd.DataFrame(data,columns=['v0','v1','v2','v3','v4'])
print(df)

df1 = df[['v1','v4']]
print(df1)

原输出结果

v0        v1         v2    v3        v4
0  A  Jack 001  Alice xyz  John  Jack xxx
1  B         0          2     3         4
2  C         2          4     5         6
3  D         3          1     4         5
         v1        v4
0  Jack 001  Jack xxx
1         0         4
2         2         6
3         3         5

解决方案代码

import pandas as pd
data = [
    ["A","Jack 001","Alice xyz","John","Jack xxx"],
    ["B",0,2,3,4],
    ["C",2,4,5,6],
    ["D",3,1,4,5]
]

df = pd.DataFrame(data,columns=['v0','v1','v2','v3','v4'])
print("原DataFrame:")
print(df)

# 基于第0行内容筛选包含"Jack"的列
jack_columns = df.iloc[0].str.contains("Jack")
filtered_df = df.loc[:, jack_columns]

print("\n筛选后的结果:")
print(filtered_df)

代码说明

  • df.iloc[0]:提取DataFrame的第0行数据
  • .str.contains("Jack"):检查该行每个元素是否包含"Jack"子串,返回一个布尔数组,True表示对应列符合条件
  • df.loc[:, jack_columns]:通过布尔数组筛选列,保留所有符合条件的列

筛选后输出结果

原DataFrame:
  v0        v1         v2    v3        v4
0  A  Jack 001  Alice xyz  John  Jack xxx
1  B         0          2     3         4
2  C         2          4     5         6
3  D         3          1     4         5

筛选后的结果:
        v1        v4
0  Jack 001  Jack xxx
1         0         4
2         2         6
3         3         5

内容的提问来源于stack exchange,提问作者lucky1928

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 16:20:30