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

Pandas的loc方法传入什么对象可选中DataFrame所有行,避免代码重复?

你要的MysteryObject真实存在,它就是Python内置的slice(None),和.loc语法中用来取全量行的:完全等价,是:语法糖对应的可赋值传递的实体对象。

优化后符合你理想写法的代码如下:

import pandas as pd
from typing import Union, Optional

def get_predictions(df: pd.DataFrame, subset: Optional[Union[str, slice]] = slice(None)) -> pd.DataFrame:
    # 注意:多级列选择需要用元组包裹,否则会被识别为行索引筛选逻辑,容易触发报错
    return df[('properties', 'prediction')].loc[subset]

如果你习惯保留默认值为None的参数设计,也可以用条件表达式实现无重复代码:

def get_predictions(df: pd.DataFrame, subset: Optional[str] = None) -> pd.DataFrame:
    return df[('properties', 'prediction')].loc[subset if subset is not None else slice(None)]

补充说明:

  • 除了slice(None),你也可以传入df.index作为全量行选择的参数,效果一致,二者性能差异可以忽略。
  • 原有代码中df['properties', 'prediction']的写法不符合多级列选择规范,需要改为用元组包裹的df[('properties', 'prediction')]避免报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 12:24:05