python - 如何在 pandas 中获取两个 CSV 文件之间的差异
问题描述
如何计算两个 CSV 文件之间的差异:
所以最终的数据框应该是这样的:
非常感谢!
解决方案
如果将索引设置为Status
两个数据帧上的列,则可以从另一个中减去一个,然后取结果的绝对值。
import pandas as pd
df1 = pd.DataFrame({'Status': ['Backlog', 'Investigation', 'Implementation',
'On Hold', 'Verification', 'Done', 'Not a Problem'],
'Count': [23, 27, 10, 18, 85, 225, 82]})
df2 = pd.DataFrame({'Status': ['Backlog', 'Investigation', 'Implementation',
'On Hold', 'Verification', 'Done', 'Not a Problem'],
'Count': [24, 25, 10, 18, 85, 224, 82]})
df3 = (df1.set_index('Status') - df2.set_index('Status')).abs()
print(df3)
您还可以使用sub
具有一个优势的功能。如果您在任一数据框中缺少值,或者索引不完全匹配(就像在您的示例中所做的那样),您可以给它一个填充值以用作占位符。
df4 = df1.set_index('Status').sub(df2.set_index('Status'), fill_value=0).abs()
print(df4)
注意:如果您使用 CSV 文件加载数据帧read_csv
,您可以同时设置索引列。
df1 = pd.csv_read('path/to/file.csv', index_col='Status')
推荐阅读
- forms - SwiftUI:用 VStack 包装 TextFields 后,覆盖在整个 VStack 而不是文本字段上
- python - kivy中的静态背景
- sql - 复合主键?还是具有唯一复合索引的自动增量主键?
- svn - 如何迁移具有 svnadmin 的 SVN 存储库:svndiff 数据解压失败
- laravel - Laravel 命名约定数据透视表
- python - 如何使用带有多个 URL(输入)的 Selenium、Bs4 和 Docx 使用 Python 进行 WebScrape 到多个输出 Docx 文件中?
- vue.js - Vue警告:属性或方法“item”未在实例上定义,但在渲染期间被引用
- reactjs - 在我的 Todo ReactApp 中,我使用的是通量。使用 useEffect 我添加了一个监听器,但是当 Todostore 更新页面时不会重新呈现。为什么不?
- javascript - textarea 的 quill 文本编辑器无法与 bootstrap 一起正常工作
- sql - 将 UTF-8 文本文件中的 varchar 插入 MSSQL 表