You need to enable JavaScript to run this app. pandas DataFrame中按首尾行条件筛选目标列的实现
优惠活动
大模型
产品
解决方案
定价
更多

pandas DataFrame中按首尾行条件筛选目标列的实现

问题根因

你现有代码无法运行的核心原因有两个:

  • 动态列名访问语法错误:df0.column 是固定访问DataFrame下名为"column"的内置属性,不会读取循环中存储列名的变量column的实际值,运行时会直接抛出AttributeError。动态获取列值的正确语法是使用方括号索引:df0[column]。
  • 行索引的写法存在适配风险:直接用[0]/[-1]按标签取行的逻辑,在DataFrame索引不是默认0起始连续整数的场景下,会取到错误的行值,更稳妥的位置索引写法是使用iloc属性。
修正后可实现预期效果的代码
#Import pandas package
import pandas as pd

#Create Dataframe
df0 = pd.DataFrame({'Temp01':[10,20,30,40,15],'Temp02':[50,60,70,70,45],'Temp03':[80,90,100,100,75]})

#empty list with column names
test =[]

for column in df0.columns: 
    # 按位置取每列的最后一行、第一行值做比较
    if df0[column].iloc[-1] > df0[column].iloc[0]:
        test.append(column)
print(test)

代码运行后输出结果为 ['Temp01'],与你给出的预期完全一致。

性能更优的替代实现

如果不需要保留手动遍历列的逻辑,可以使用pandas原生的向量化运算实现相同效果,处理大体积DataFrame时效率远高于循环写法:

# 直接比较整个DataFrame的第一行、最后一行,筛选满足条件的列名
test = df0.columns[df0.iloc[-1] > df0.iloc[0]].tolist()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.28 22:15:00