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

如何用整数列表选取非整数索引的pd.DataFrame行?代码求助

解决方法

要实现用整数列表选取非整数索引DataFrame的对应行,你需要用基于位置的索引方法iloc,而不是loc(loc是基于标签的索引,会匹配你的非整数索引值,不是位置)。另外注意,你的原始代码里loc(L)的调用方式是错误的,应该用方括号[]。

正确代码示例

import pandas as pd

L = [1, 3, 5]
df = pd.DataFrame([1,2,3,4,5,6,7], index=[0.1,0.2,0.3,0.4,0.5,0.6,0.7])

# 用iloc按位置选取行,再提取列0的数据
selected = df.iloc[L][0]

# 把索引和值按期望格式拼接输出
output = ' '.join(f"{idx} {val}" for idx, val in selected.items())
print(output)

输出结果

0.2 2 0.4 4 0.6 6

为什么你的原始代码不行?

  • df[0]是正确的,它选取了DataFrame中列名为0的列(因为你的DataFrame是单列,列名默认是0)。
  • df[0].loc(L)有两个问题:
    1. loc的调用应该用方括号[],不是圆括号();
    2. loc是按索引标签匹配的,你的L里的1,3,5不是df的索引值(df的索引是0.1、0.2这类小数),所以会报错找不到对应标签。

另一种更简洁的写法

如果你只需要提取列0的对应值和索引,也可以直接对列用iloc:

selected = df[0].iloc[L]
output = ' '.join(f"{idx} {val}" for idx, val in selected.items())
print(output)

这样和上面的效果完全一样,只是直接对列Series使用iloc来选取位置。

内容的提问来源于stack exchange,提问作者Artur Müller Romanov

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:01:54