2015-02-24 5 views
-3

У меня есть набор данных, например d1.Как фильтровать данные в python

import pandas as pd 
d1 = { 
'customers': pd.Series([1, 1, 1, 2, 2, 3, 3, 4, 4]), 
'channel': pd.Series(['a', 'a', 'b', 'c', 'a', 'a', 'b', 'b', 'c']), 
'freq': pd.Series([3, 3, 3, 2, 2, 2, 2, 2, 2]) 
} 
d1=pd.DataFrame(d1) 

Я хочу получить список клиентов, которые использовали только два отдельных канала, а каналы «a» являются обязательными.

Для экс .. первый клиент использовал два различных канала 'A' & 'B'
второй клиент который использовал 'а' 3-го клиента & 'C', используемый 'а' & 'Ъ'. Но клиент 4 не использовал канал «a» и т. Д.

ответ

0

Это то, что вы хотите?

d1[d1.customers.isin(d1[(d1.freq==2) & (d1.channel=="a")].customers)] 

    channel customers freq 
3  c   2  2 
4  a   2  2 
5  a   3  2 
6  b   3  2 

НТН

+0

No. FREQ = 2 означает, что клиенты будут иметь две записи. В этих двух записях по крайней мере одна запись должна быть в канале «a». – kondal

+0

Это не то, что содержит ваш dataframe. –

+0

Я не понимаю. Нет колонки «запись». Пожалуйста, перефразируйте свой вопрос и опубликуйте более точный результат того, что вы хотите. (И исправьте ввод, если необходимо) – jrjc

Смежные вопросы