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

如何通过索引获取DataFrame行,使其结果与data_file.iterrows()一致?

获取与iterrows()结果一致的DataFrame行

首先得明确iterrows()的返回格式:它每次迭代都会返回一个元组,第一个元素是该行的索引标签,第二个元素是以原DataFrame列名为索引的Series对象——这两个部分缺一不可,才能和iterrows()的结果完全匹配。

下面分两种场景给你可行的解决方案:

1. 按行的位置(整数索引)获取

如果你知道目标行在DataFrame中的位置(从0开始计数),可以用iloc获取行数据,再搭配df.index拿到对应的索引标签:

import pandas as pd

# 示例DataFrame
df = pd.DataFrame({'A': [10, 20, 30], 'B': [40, 50, 60]}, index=['x', 'y', 'z'])

# 获取第1行(位置索引为1)
target_pos = 1
row_index = df.index[target_pos]
row_series = df.iloc[target_pos]

# 输出结果,和iterrows()迭代到第1行的内容完全一致
print(row_index, row_series)

2. 按行的标签索引获取

如果你的DataFrame用了自定义的标签索引(比如字符串、日期等),直接用loc根据标签取行,再把标签本身作为元组的第一个元素:

# 获取标签为'z'的行
target_label = 'z'
row_index = target_label
row_series = df.loc[target_label]

print(row_index, row_series)

注意:处理重复索引的情况

如果你的DataFrame存在重复的行标签,直接用loc会返回一个子DataFrame而不是Series,这时候需要用iloc[0]提取第一行转成Series,才能和iterrows()的单一行结果匹配:

# 带重复索引的示例DataFrame
df_dup = pd.DataFrame({'A': [10, 20, 30], 'B': [40, 50, 60]}, index=['x', 'x', 'z'])

target_label = 'x'
row_index = target_label
# 提取第一个匹配标签的行转成Series
row_series = df_dup.loc[target_label].iloc[0]

print(row_index, row_series)

为什么你的尝试可能不对?

大概率是只获取了行的Series数据,没有把行索引标签包含在结果里,或者混淆了位置索引和标签索引(比如用loc传入位置数字,而你的行索引不是默认整数),导致结果和iterrows()的结构/内容不一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:35:01