python - 为 ":"切片定义变量

标签 python pandas indexing slice

我想定义一个函数,如果设置了另一个变量,则该函数将在数据帧的一部分上运行,否则将在整个数据帧上运行。例如:

def mean_loc(df, col_name, idx=None):
    if idx is not None:
        return df.loc[idx, col_name].mean()
    else:
        return df[col_name].mean()

这工作得很好,但我想知道是否可以做这样的事情:

def mean_loc_2(df, col_name, idx=None):
    if idx is None:
        idx = :
    return df.loc[idx, col_name].mean()

这当然行不通,但我想知道是否存在旁路?如果我这样做idx = df.indexdf.loc[df.index, col_name]的评价比 df.loc[:, col_name] 长得多。我尝试过使用 slice通过执行 idx = slice(len(df)) 从内置函数中但没有任何成功(它也更长并且不适用于 DateTime 索引)。

有人知道如何做这样的事情吗?

最佳答案

: 不是一个值;它是 Python 语法的一部分。您想要的是 : 语法表示的 slice 对象。

if idx is None:
    idx = slice(None)  # sadly, slice() does not work

由于 slice 对象是不可变的,因此使用它作为默认参数值是安全的。

def mean_loc_2(df, col_name, idx=slice(None)):
    return df.loc[idx, col_name].mean()

关于python - 为 ":"切片定义变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60266161/

相关文章:

python - 以与使用元组相同的方式使用 ndarray 进行索引

sql - 来自复合键的索引是否足够?

python - 如何: fit_generator in keras

javascript - 如何让 Flask 识别静态文件夹中的 CSS 和 JS 文件?

python - 根据文件名将目录中的多个 .xlsx 文件读入单独的 Pandas 数据框中

python - 具有多个 X 特征和 Python 中的单个 Y 的散点图

python - Pandas 中的行满足某些条件,将 dos 条件的值分配给一个单元格

python - 索引错误,如果列有值,则从数组中删除行

python - 将两个字符串合并到一个列表中

python - 创建充当校验和并验证发件人的文件的最佳方法?