首页 > 编程问答 >Python + Polars:如何有效地“fill_null”仅 DataFrame 的某些列?

Python + Polars:如何有效地“fill_null”仅 DataFrame 的某些列?

时间:2024-07-22 04:17:22浏览次数:17  
标签:python python-polars

例如,假设我只想 fill_null(strategy="zero") DataFrame 的数字列。我当前的策略是这样做:

final_df = df.select(cs.exclude(cs.numeric()))
final_df.with_columns(df.select(cs.numeric()).fill_null(strategy="zero"))

是否有替代的、更惯用或更有效的方法来实现我想做的事情?


当然,可以使用以下方法之一更有效地使用 Polars 在 Polars DataFrame 中填充某些列中的空值:

1. 使用 when().then().otherwise()

此方法提供了一种基于每列类型应用不同填充策略的简洁方法:

import polars as pl

# 示例 DataFrame
df = pl.DataFrame({
    "A": [1, 2, None, 4],
    "B": [None, "b", "c", "d"],
    "C": [5.0, 6.0, None, 8.0],
})

# 使用 `when().then().otherwise()` 进行有条件的 fill_null
final_df = df.with_columns(
    pl.when(pl.col("*").is_numeric())
    .then(pl.col("*").fill_null(0))
    .otherwise(pl.col("*"))
)

print(final_df)

此代码执行以下操作:

  • pl.col("*").is_numeric() : 检查 DataFrame 中的每一列是否为数字类型。
  • .then(pl.col("*").fill_null(0)) :如果该列为数字类型,则用 0 填充空值。
  • .otherwise(pl.col("*")) :如果该列不是数字类型,则保持其原始值。

2. 使用列表推导式

对于更短的代码,可以使用列表推导式为特定列应用 fill_null

import polars as pl

# 示例 DataFrame
df = pl.DataFrame({
    "A": [1, 2, None, 4],
    "B": [None, "b", "c", "d"],
    "C": [5.0, 6.0, None, 8.0],
})

# 要填充的数字列列表
numeric_cols = ["A", "C"]

# 使用列表推导式填充数字列中的空值
final_df = df.with_columns(
    [
        pl.col(col).fill_null(0) if col in numeric_cols else pl.col(col)
        for col in df.columns
    ]
)

print(final_df)

此代码执行以下操作:

  • 它遍历 DataFrame 中的每一列 ( for col in df.columns )。
  • 如果该列名称在 numeric_cols 列表中,则它会用 fill_null(0) 填充空值。
  • 否则,它会保持该列不变 ( pl.col(col) )。

这两种方法都比创建两个单独的 DataFrame 并将它们连接起来更有效和惯用。选择认为更易读且更适合代码库的方法。

标签:python,python-polars
From: 78776268

相关文章

  • 如何找到 Windows 上 Python 的安装位置?
    我想找出我的Python在Windows上的安装路径。例如:C:\Python25如何找到Python的安装位置?在Windows上查找Python安装位置的方法有很多种:1.使用where命令(推荐方法):打开命令提示符(cmd)。输入以下命令并按回车键:wherepython......
  • Python Pandas:如何解析没有行结尾的 CSV
    如何解析没有行结尾的CSV文件?示例数据sep=;Id;Date;1;1980-02-29;2;1980-03-10;3;;可以使用lineterminator参数指定行终止符来解析没有行尾的CSV文件。在这种情况下,你可以将lineterminator设置为一个空字符串('')。以下是使用......
  • Python 中的 azure.ai.translation.document - 无法使用当前权限访问源文档位置
    我在使用Python中的azure.ai.translation.document库时遇到问题。我已经在Azure中设置了翻译服务以及带有两个容器的Blob存储。我已使用“用户委托密钥”创建了SAS连接。一种用于源(读取/列表),一种用于目标(写入/列表)。例如我尝试运行Python程序,但源b......
  • 博文标题:探索Python中的元编程:装饰器的魔法
    引言在Python的世界里,装饰器(Decorators)是一种非常强大的特性,它允许程序员在不修改原始函数代码的情况下,为函数添加新的功能。这种机制不仅增强了代码的可读性和可维护性,还提供了高度的灵活性和扩展性。本文将深入探讨装饰器的基本概念、工作原理以及如何利用它们来简化和......
  • 使用Python 和 Selenium 抓取 酷狗 音乐专辑 附源码
    在这篇博客中,我将分享如何使用Python和Selenium抓取酷狗音乐网站上的歌曲信息。我们将使用BeautifulSoup解析HTML内容,并提取歌曲和专辑信息。准备工作首先,我们需要安装一些必要的库:pipinstallrequestsbeautifulsoup4selenium代码实现以下是完整的代码:importosi......
  • 基于Django+Python的网易新闻与评论舆情热点分析平台
    一、引言在信息爆炸的时代,人们每天面对海量的信息流,如何从中筛选出有价值的信息并进行深度分析变得尤为重要。基于Django+Python的网易新闻与评论舆情热点分析平台,旨在为用户提供一个高效的数据分析工具,帮助用户快速理解新闻趋势、情感倾向以及公众对特定事件的看法。通过自......
  • Python解释器详解及其应用场景
    Python解释器及其应用场景一、Python解释器概述Python解释器是Python程序运行的核心,它负责读取Python代码(即.py文件)并将其转换为机器语言,从而使计算机能够执行。简单来说,Python解释器就像是Python代码与计算机之间的翻译官,把Python代码翻译成计算机能懂的语言。Python解释器......
  • 利用【MATLAB】和【Python】进行【图与网络模型】的高级应用与分析】
    目录一、图与网络的基本概念1.无向图与有向图2.简单图、完全图、赋权图3.顶点的度4.子图与连通性5.图的矩阵表示MATLAB代码实例Python代码实例 二、最短路径问题1.最短路径问题的定义2.Dijkstra算法MATLAB代码实例Python代码实例三、最小生成树问题1.......
  • python_wholeweek1
    目录(day1-7)一周的学习1.计算机之编程什么是编程语言什么是编程为什么要编程2.计算机组成原理计算机五大组成CPU控制器运算器内存外存输入设备输出设备(I/O设备)32位和64位32位64位多核CPU硬盘工作原理机械硬盘工作原理固态硬盘工作原理3.计算机操作系统文件是什么?应用程序是什......
  • python模块与包
    python模块与包1.模块(是一个python文件)自定义模块:(1)新建一个py文件在同一个project里然后可以用import先导入再在main里使用main.py importcc.ad(2,5)c.py defad(s,y):print(s+y)导入模块中的方法会自动实行被调用模块里所有所有语句(2)导入不同模块同一方法......