Как вернуть количество раз, когда значение в столбце не совпадает с другим значением в другом столбце? - PullRequest
0 голосов
/ 04 декабря 2018

У меня есть датафрейм df:

>>> df
           user_id     group      landing_page    converted

          12345       control      old_page          0
          12346       treatment    new_page          1
          12347       control      new_page          1
          12345       treatment    old_page          0
          12349       treatment    old_page          1

Я хочу вернуть количество раз, когда лечение не совпадает с new_page.

Я пытался df[(df['group' == "treatment"]) != (df['landing_page'] == 'new_page')] Однако я продолжаюполучение ошибок.

Кроме того, есть ли способ получить среднее значение конвертирования с помощью уникальных пользователей?заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 04 декабря 2018

IIUC, вы ищете

>>> ((df['group'] == 'treatment') & (df['landing_page'] != 'new_page')).sum()
2

Подробности:

>>> df['group'] == 'treatment'
0    False
1     True
2    False
3     True
4     True
Name: group, dtype: bool
>>> 
>>> df['landing_page'] != 'new_page'
0     True
1    False
2    False
3     True
4     True
Name: landing_page, dtype: bool
>>> 
>>> (df['group'] == 'treatment') & (df['landing_page'] != 'new_page')
0    False
1    False
2    False
3     True
4     True
dtype: bool
>>>
>>> ((df['group'] == 'treatment') & (df['landing_page'] != 'new_page')).sum()
2
0 голосов
/ 04 декабря 2018

Вопрос 1:

IIUC, вам просто нужно сделать:

len(df[(df.group=='treatment') & (df.landing_page != 'new_page')])

, который выдает:

2

В общем, вы можете получить все подсчетыдля комбинаций group и treatment с использованием groupby:

>>> df.groupby(['group','landing_page']).size()
group      landing_page
control    new_page        1
           old_page        1
treatment  new_page        1
           old_page        2
dtype: int64

Показано, что у вас есть только 1 treatment группа с new_page и 2 treatment группы с old_page

Вопрос 2:

Сгруппируйте по user_id и получите среднее значение converted столбца:

df.groupby('user_id').converted.mean()

# user_id
# 12345    0
# 12346    1
# 12347    1
# 12349    1
# Name: converted, dtype: int64
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...