Как я могу утвердить значение ячейки в Pandas Dataframe - PullRequest
0 голосов
/ 11 января 2019

Я пишу примеры модульных тестов Pytest, когда вызов возвращает Pandas Dataframe, и я хочу установить в нем определенное значение ячейки. Я пытался это, но бросает меня 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'

Вот мои примерные данные:

    id   col_A      col_B  
0  RK7   A_val    2018-05-13                  
1  RK7   A_val    2018-09-02                   
0  BM    A1_val   2018-05-05                    
1  BM    A1_val   2018-05-05                      

          col_C  
0         Q3  
1         Q4  
0         Q1 
1         Q2 

Ответы [ 2 ]

0 голосов
/ 11 января 2019

Нашел, с датами и временными рядами, которые мне нужно конвертировать, используя 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 за всю вашу помощь.

0 голосов
/ 11 января 2019

Вы не можете использовать ключевое слово and в операциях маски панд, вам нужно использовать побитовый оператор &, например:

assert any(result_df.loc[result_df['colA'].str.contains('A_val') & result_df['colB'].str.contains('B_val')]['colC'] == 'C_val')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...