python - 比较两个 Pandas 数据框的差异

标签 python python-2.7 pandas

我有一个脚本更新 5-10 列的数据,但有时开始 csv 将与结束 csv 相同,所以我不想写一个相同的 csv 文件,我希望它什么也不做......

如何比较两个数据帧以检查它们是否相同?

csvdata = pandas.read_csv('csvfile.csv')
csvdata_old = csvdata

# ... do stuff with csvdata dataframe

if csvdata_old != csvdata:
    csvdata.to_csv('csvfile.csv', index=False)

有什么想法吗?

最佳答案

您还需要注意创建 DataFrame 的副本,否则 csvdata_old 将被 csvdata 更新(因为它指向同一个对象):

csvdata_old = csvdata.copy()

要检查它们是否相等,您可以use assert_frame_equal as in this answer :

from pandas.util.testing import assert_frame_equal
assert_frame_equal(csvdata, csvdata_old)

您可以将其包装在一个函数中,例如:

try:
    assert_frame_equal(csvdata, csvdata_old)
    return True
except:  # appeantly AssertionError doesn't catch all
    return False

讨论了更好的方法...

关于python - 比较两个 Pandas 数据框的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38057870/

相关文章:

python - 属性错误 : install_layout when attempting to install a package in a virtual environment

inheritance - 打印为我提供了类列表上的内存地址,而不是特定的 STR

python - 改变递归函数中列表对象的值

python - ggplot模块已安装但无法导入

python - Pandas 使用 dfA 列合并 == dfB 索引

python - SQLAlchemy 错误 : "argument formats can' t be mixed"when inputting variables

python - Python 中的 Hangman - 根据索引 python 替换单个字符串中的多个字符

python - 并非所有类别都存在时的虚拟变量

python - 在 Pandas 查询中使用列表

python - Django 模板 - 在哪里编码以查找此特定模板?