2014-11-17 2 views
2

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

date page1 page2 page3 page4 
1/2001 entered toyota NaN  NaN 
1/2001 entered ford NaN  NaN 
1/2001 entered honda ford left 
1/2001 entered ford toyota left 
1/2001 entered toyota ford left 
1/2001 entered index photo left 

Что я пытаюсь сделать, это найти количество столбцов, где автомобиль появляется более чем в два раза (> = 2). Поэтому, учитывая приведенные выше данные, есть два ряда, где автомобиль появляется дважды.

Итак, в предыдущем примере у меня было бы следующее.

honda ford 1 
ford toyota 1 
toyota ford 1 

Я думал о нападении это через pandasql, но я в полной растерянности относительно того, как я бы даже приблизиться к этому (новичку здесь). Может ли кто-нибудь указать мне на некоторые предложения или что я должен рассмотреть.

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

q = """ 
SELECT Path_1, Path_2, COUNT(*) FROM df 
GROUP BY Path_1, Path_2; 
""" 
print ps.sqldf(q, locals()) 
+0

делает дело заказа? например, «honda ford» так же, как «ford honda»? – acushner

+0

заказ не имеет значения – ATMA

+0

также, как вы, со своего ввода, пришли к выводу, что '1/2001 введенный honda ford left' имеет> = 3 автомобиля в нем? – acushner

ответ

2

так что вы можете использовать эту любопытную математику здесь:

vehicles = {'ford', 'honda', 'toyota', 'steve_urkel_car'} #etc 
df[df.isin(vehicles).sum(1) >= 2] 
Смежные вопросы