我有以下代码
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"不包含列"Three",因此运行assertequals()
会返回"Test Failed:df is missing column/s"。
我想要的是能够检测哪一列丢失,并将其作为失败断言的一部分返回,因此类似于"测试失败:df缺少列/s:['Tree']'
有没有办法用assert和panda做到这一点?
计算两个列表之间的差异:
>>> expected_df.columns.difference(df.columns).tolist()
['Three']