4个在Pandas DataFrame中进行元素比较的函数

基于实例讲解用于数据帧逐元素比较的4个Pandas函数。

微信搜索关注《Python学研大本营》,加入读者群,分享更多精彩

图片

Pandas DataFrame是具有标记行和列的二维数据结构。

图片

有3行3列的DataFrame

有时我们需要对两个DataFrame进行逐个元素的比较。例如:

  • 使用另一个DataFrame的值来更新其中的值。

  • 比较数值,并选择较大或较小的值。

在本文中,我们将学习四个不同的Pandas函数,可以用于完成这些任务。我们还将通过实例来更好地理解它们之间的区别和相似之处。

首先,让我们创建两个DataFrame,用于在示例中使用。

import numpy as np
import pandas as pd

# 使用随机整数创建DataFrame
df1 = pd.DataFrame(np.random.randint(0, 10, size=(4, 4)), columns=list("ABCD"))
df2 = pd.DataFrame(np.random.randint(0, 10, size=(4, 4)), columns=list("ABCD"))

# 添加一些缺失值
df1.iloc[2, 3] = np.nan
df1.iloc[1, 2] = np.nan

图片

1.combine

combine函数基于给定的函数进行逐元素的比较。例如,我们可以选择每个位置的两个值中的最大值。当我们执行示例时,它会更清晰。

combined_df = df1.combine(df2, np.maximum)

图片

看一下第一行和第一列中的数值。组合的DataFrame具有5和2中较大的一个。

如果其中一个值为NaN(即缺失值),那么组合的DataFrame在此位置也有NaN,因为Pandas无法将值与缺失值进行比较。

我们可以通过使用fill_value参数来选择一个常量值,在缺失值的情况下使用该值,然后将其与另一个DataFrame中的值进行比较。

combined_df = df1.combine(df2, np.maximum, fill_value=0)

图片

df1中有两个NaN值,这些值被填充为0,然后与df2中相同位置的值进行比较。

2.combine_first

combine_first函数使用另一个DataFrame中相同位置的值更新NaN值。

combined_df = df1.combine_first(df2)

图片

如上图所示,combined_dfdf1具有相同的值,除了NaN值,这些值被填充为df2的值。

需要注意的是,combine_first函数不会更新df1df2中的值。它只返回第一个DataFrame的更新版本。

3.update

update函数使用另一个DataFrame中相同位置的值更新DataFrame中的缺失值。

它听起来与combine_first函数所做的作用相同。但是,有一个重要的区别。

update函数不返回任何内容,而是会在原地更新。因此,原始DataFrame被修改(或更新)。使用示例将更清楚地理解。

我们有两个DataFrame,如下图所示:

图片

让我们在df1上使用update函数。

df1.update(df2)

这行代码不返回任何内容,但会更新df1。更新版本如下:

图片

df1不再包含缺失值,这些值已使用df2中的值进行了更新。

4.compare

compare函数比较同一位置的值,并返回一个显示它们并排的DataFrame。

comparison = df1.compare(df2)

图片

如果特定位置的数值相同,则比较结果显示它们为NaN(例如,第二行第一列)。我们可以通过使用keep_equal参数更改此行为。

comparison = df1.compare(df2, keep_equal=True)

图片

总结

本文介绍学习了四个不同的Pandas函数,用于对两个DataFrame中的值进行逐个元素比较。它们都有不同的用途。有些用于更新值,而有些仅进行比较。

在特定情况下,适当使用这些函数之一是非常有用的。因此,最好能够了解所有这些函数。

推荐书单

秋日阅读企划icon-default.png?t=N7T8https://pro.m.jd.com/mall/active/3yzSCnrymNQEzLmwtZ868xFeytT7/index.html

《Pandas1.x实例精解》

《Pandas1.x实例精解》详细阐述了与Pandas相关的基本解决方案,主要包括Pandas基础,DataFrame基本操作,创建和保留DataFrame,开始数据分析,探索性数据分析,选择数据子集,过滤行,对齐索引,分组以进行聚合、过滤和转换,将数据重组为规整形式,组合Pandas对象,时间序列分析,使用Matplotlib、Pandas和Seaborn进行可视化,调试和测试等内容。此外,该书还提供了相应的示例、代码,以帮助读者进一步理解相关方案的实现过程。《Pandas1.x实例精解》适合作为高等院校计算机及相关专业的教材和教学参考书,也可作为相关开发人员的自学用书和参考手册。

Pandas1.x实例精解icon-default.png?t=N7T8https://item.jd.com/13255935.html

精彩回顾

《迭代vs向量化,如何提升Pandas性能?》

《使用Scikit-Learn,快速掌握机器学习预测方法》

《使用Langchain免费运行ChatGPT插件》

《快来体验PandasAI数据分析,将Pandas和ChatGPT结合起来》

《4步掌握“指令工程”,使用ChatGPT进行高效AI创作》

《掌握这18个Pandas知识点,快速入门数据分析》

微信搜索关注《Python学研大本营》,加入读者群

访问【IT今日热榜】,发现每日技术热点

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值