首页 > 解决方案 > 如何在 pandas 中获取两个 CSV 文件之间的差异

问题描述

如何计算两个 CSV 文件之间的差异:

所以最终的数据框应该是这样的:

非常感谢!

标签: pythonpandasjupyter-notebook

解决方案


如果将索引设置为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')

推荐阅读