并排输出两个Pandas数据帧的差异 - 突出显示差异

并排输出两个Pandas数据帧的差异 - 突出显示差异

我试图突出显示两个数据帧之间的确切变化。


假设我有两个Python Pandas数据帧:


"StudentRoster Jan-1":

id   Name   score                    isEnrolled           Comment

111  Jack   2.17                     True                 He was late to class

112  Nick   1.11                     False                Graduated

113  Zoe    4.12                     True       


"StudentRoster Jan-2":

id   Name   score                    isEnrolled           Comment

111  Jack   2.17                     True                 He was late to class

112  Nick   1.21                     False                Graduated

113  Zoe    4.12                     False                On vacation

我的目标是输出一个HTML表:


标识已更改的行(可以是int,float,boolean,string)

输出具有相同,OLD和NEW值的行(理想情况下输入到HTML表中),以便消费者可以清楚地看到两个数据帧之间发生了哪些变化:


"StudentRoster Difference Jan-1 - Jan-2":  

id   Name   score                    isEnrolled           Comment

112  Nick   was 1.11| now 1.21       False                Graduated

113  Zoe    4.12                     was True | now False was "" | now   "On   vacation"

我想我可以逐行和逐列比较,但有更简单的方法吗?


慕虎7371278
浏览 790回答 3
3回答

慕桂英3389331

第一部分类似于Constantine,你可以得到哪些行为空的布尔值*:In [21]: ne = (df1 != df2).any(1)In [22]: neOut[22]:0    False1     True2     Truedtype: bool然后我们可以看到哪些条目已更改:In [23]: ne_stacked = (df1 != df2).stack()In [24]: changed = ne_stacked[ne_stacked]In [25]: changed.index.names = ['id', 'col']In [26]: changedOut[26]:id  col1   score         True2   isEnrolled    True     Comment       Truedtype: bool这里第一个条目是索引,第二个条目是已更改的列。In [27]: difference_locations = np.where(df1 != df2)In [28]: changed_from = df1.values[difference_locations]In [29]: changed_to = df2.values[difference_locations]In [30]: pd.DataFrame({'from': changed_from, 'to': changed_to}, index=changed.index)Out[30]:                from           to id col1  score       1.11         1.212  isEnrolled  True        False    Comment     None  On vacation*注:这一点很重要df1,并df2在这里分享相同的索引。为了克服这种歧义,您可以确保只使用共享标签df1.index & df2.index,但我想我会将其作为练习。
打开App,查看更多内容
随时随地看视频慕课网APP