有效比较和显示数据帧差异
简介
识别和理解两者之间的差异数据帧是数据分析中的常见任务。无论是将历史数据与当前趋势进行比较,还是跟踪数据库中的变化,准确突出显示这些变化的能力都是至关重要的。
问题陈述
假设我们有两个数据框包含两个不同月份的学生名册信息:“StudentRoster Jan-1”和“StudentRoster Jan-2”。我们的目标是创建一个 HTML 表格,清楚地显示这两个数据帧之间的更改,显示每行的新值和旧值。
解决方案
识别更改的行
第一步是确定哪些行实际上已更改。我们可以使用 any() 函数检查每一行是否有任何差异:
<code class="python">import pandas as pd import numpy as np ne = (df1 != df2).any(1)</code>
这将返回一个布尔系列,其中 True 表示更改的行。
提取更改的值
接下来,我们需要提取实际更改的值。我们使用 .stack() 方法将数据帧转换为单个列,然后过滤该列以查找更改的值:
<code class="python">ne_stacked = (df1 != df2).stack() changed = ne_stacked[ne_stacked] changed.index.names = ['id', 'col']</code>
这将为我们提供更改值的索引和列名称。
提取先前值和新值
使用更改值中的索引,我们可以提取每个更改条目的先前值和新值:
<code class="python">difference_locations = np.where(df1 != df2) changed_from = df1.values[difference_locations] changed_to = df2.values[difference_locations]</code>
创建 HTML 表格
最后,我们可以通过组合提取的值来创建 HTML 表格:
<code class="python">pd.DataFrame({'from': changed_from, 'to': changed_to}, index=changed.index)</code>
此数据框包含两列:“from”和“to”,显示每个更改条目的原始值和新值。数据框的索引标识发生更改的行和列。
通过并排显示更改的值及其先前值和新值,此 HTML 表格提供了更改的清晰全面的概述两个数据框之间。
以上是如何使用 Python 有效比较和显示数据帧差异的详细内容。更多信息请关注PHP中文网其他相关文章!