我正在编写pytest单元测试用例,其中该调用返回一个Pandas Dataframe,我想在其中声明一个特定的单元格值。我试过了,但把我扔了[
{
"paragraph": "text"
},
{
"paragraph": "text 2"
},
{
"paragraph": "text 3"
}
]
E ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
这是我的示例数据:
assert result_df.loc[result_df['col_A'].str.contains('A_val') and result_df['col_B'].str.contains('2018-05-13'), 'col_C'].item() == 'Q3'
答案 0 :(得分:1)
您不能在熊猫遮罩操作中使用and
关键字,需要像这样使用按位运算符&
:
assert any(result_df.loc[result_df['colA'].str.contains('A_val') & result_df['colB'].str.contains('B_val')]['colC'] == 'C_val')
答案 1 :(得分:0)
找到它,使用日期时间序列,我需要使用strftime
而不是str
进行转换。
这是正确的:
check1 = result_df['col_A'].str.contains('A_val')
check2 = result_df['col_B'].apply(lambda x: x.strftime('%Y-%m-%d')).str.contains('2018-05-13')
assert result_df.loc[check1 & check2]['col_C'].item() == '2018-Q3-COST'
感谢@wpercy的所有帮助。