如何在Pandas Dataframe中声明单元格值

时间:2019-01-10 21:03:05

标签: python pandas dataframe

我正在编写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'

2 个答案:

答案 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的所有帮助。