【问题标题】:Pandas: Detect missing columns between one df and another [duplicate]Pandas:检测一个df和另一个df之间的缺失列[重复]
【发布时间】:2021-08-25 06:12:06
【问题描述】:

我有以下代码

import pandas as pd

expected_df = pd.DataFrame({'One': [20], 'Two': [30], 'Three': [90]})

df = pd.DataFrame({'One': [20], 'Two': [30]})

assert expected_df.equals(df), 'Test Failed: df is missing column/s'

# returns 'Test Failed: df is missing column/s'

如您所见,“df”不包含“三”列,因此运行 assert equals() 会返回“测试失败:df 缺少列/秒”。

我想要的是能够检测丢失的列并将其作为失败断言的一部分返回,因此类似于“测试失败:df is missing column/s: ['Three']'”

有没有办法用 assert 和 pandas 做到这一点?

【问题讨论】:

  • 你可以使用 expected_df.eq(df),它给你一个 True False df 并从那里断言

标签: python pandas dataframe assert


【解决方案1】:

计算两个列表之间的差异:

>>> expected_df.columns.difference(df.columns).tolist()
['Three']

【讨论】:

    猜你喜欢
    • 2018-04-04
    • 2017-04-22
    • 2020-12-13
    • 2021-02-19
    • 2021-08-18
    • 2023-01-14
    • 1970-01-01
    • 2020-04-06
    • 2013-03-06
    相关资源
    最近更新 更多