基于实例讲解用于数据帧逐元素比较的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_df
与df1
具有相同的值,除了NaN
值,这些值被填充为df2
的值。
需要注意的是,combine_first
函数不会更新df1
和df2
中的值。它只返回第一个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中的值进行逐个元素比较。它们都有不同的用途。有些用于更新值,而有些仅进行比较。
在特定情况下,适当使用这些函数之一是非常有用的。因此,最好能够了解所有这些函数。
推荐书单
秋日阅读企划
https://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实例精解https://item.jd.com/13255935.html
精彩回顾
《快来体验PandasAI数据分析,将Pandas和ChatGPT结合起来》
微信搜索关注《Python学研大本营》,加入读者群
访问【IT今日热榜】,发现每日技术热点