python - 我如何通过: as a function parameter in python?

标签 python pandas slice

我正在使用 python3 和 pandas,我想将 : 作为函数参数传递,以声明传递给 df.loc 的切片中的所有行。

例如,假设我有一个函数可以填充 na 值,如下所示:

def fill_na_w_value(df, rows, columns, fill):

    for col in columns:
        df.loc[rows, columns].fillna(
            fill,
            inplace=True
        )

有时我可能不想将其应用于某些行,而是将其应用于所有行,在 pandas 中,可以使用 df.loc[:, col] 访问它

如果我从一个函数调用它,它会喜欢

fill_na_w_value(df, :, ['col1'], 0)

但是由于 :; ,上面的代码会给我一个语法错误。我如何将其作为函数参数传递?

最佳答案

使用slice(None)来表示:。请注意,您可以使用 pipe通过函数传递数据帧,以及 loc接受行和索引过滤的列表:

df = pd.DataFrame({'col1': [1, 2, np.nan, 4, 5, np.nan, 7, 8, np.nan]})

def fill_na_w_value(df, row_slicer, columns, value):
    df.loc[row_slicer, columns] = df.loc[row_slicer, columns].fillna(value)
    return df

df1 = df.pipe(fill_na_w_value, slice(None), ['col1'], 0)

print(df1)

   col1
0   1.0
1   2.0
2   0.0
3   4.0
4   5.0
5   0.0
6   7.0
7   8.0
8   0.0

这是一个使用列表而不是slice的示例对象:

df2 = df.pipe(fill_na_w_value, [2, 5], ['col1'], 0)

print(df2)

   col1
0   1.0
1   2.0
2   0.0
3   4.0
4   5.0
5   0.0
6   7.0
7   8.0
8   NaN

关于python - 我如何通过: as a function parameter in python?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53698064/

相关文章:

python - 无法从 Python 提交 mysql 查询

Python:对 Pandas 数据框中与列值匹配的行进行求和?

python - Celery 工作运行时 SECRET_KEY 设置不能为空

python - 将列格式从秒更改为分钟

python - 使用 odbc_connect 从 SQLAlchemy 连接到 SQL 服务器

自定义类上的 Python bytes(...)

python - 如果数据集中的一列与另一列重叠该怎么办?

python - 切片稀疏(scipy)矩阵

go - 对切​​片上的 append() 行为感到困惑

arrays - 在 Golang 中检查 IP 地址 slice 中的 IP 的有效方法