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

Pandas持久化排序问题:如何遍历已排序DataFrame

问题解决:Pandas排序后逐行遍历排序结果

场景说明

现有8列文本文件,首行是带#的注释行,无数据列名。通过以下代码导入为DataFrame后,按第7列升序排序得到dataS,需逐行遍历排序后的结果:

import pandas as pd
data = pd.read_csv("file.txt", sep='\t', comment='#', header=None)
dataS = data.sort_values(7)

示例文本:

#0.y[m] 1.uy[m_e*c] 2.x[m] 3.ux[m_ec] 4.z[m] 5.uz[m_ec] 6.w 7.ID
4.800773e-06    5.825619e+00    9.693396e-06    1.732705e+00    1.068944e-05    -3.532225e+00   1.255580e+04    24641553
4.359847e-06    1.275340e+01    9.564333e-06    -3.591681e-01   9.690643e-06    7.398885e+00    1.255580e+04    18676620

解决方法

方法1:直接遍历已排序的dataS

data.sort_values(7)默认返回新的排序后DataFrame,dataS已经是排序后的结果,直接遍历即可。推荐使用itertuples()(性能优于iterrows()):

# 遍历排序后的每一行,索引占第0位,后续变量对应各列值
for row in dataS.itertuples(index=True, name='Pandas'):
    # 示例:打印第7列(ID列)的值
    print(row[8])
    # 也可通过属性名访问
    print(getattr(row, '_8'))

如果需要同时获取行索引和列值,用iterrows():

for idx, row in dataS.iterrows():
    # 打印第7列的值
    print(row[7])

方法2:原地排序(修改原DataFrame)

如果希望直接将原data替换为排序后的状态,可添加inplace=True参数,之后遍历data即可:

data.sort_values(7, inplace=True)
# 遍历已排序的原DataFrame
for idx, row in data.iterrows():
    print(row[7])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 10:52:07