2015-01-28 4 views
0

У меня есть ~ 150 000 строк данных, содержащих подробные отсканированные письма по домену, шаблону электронной почты, типам отказов и количеству каждого дня. Он отформатирован как ниже:Как разбить кадр данных pandas по многим критериям

+--------+-------------+-----------------+-------+---------+-------+ 
| t | bounce_type | source_ip | tid | emld | count | 
+--------+-------------+-----------------+-------+---------+-------+ 
| 1/1/15 | hard  | 199.122.255.142 | 10033 | aol.com |  4 | 
+--------+-------------+-----------------+-------+---------+-------+ 

Что это самый простой способ, чтобы выбрать только те строки, с emld из «aol.com», подпрыгивать тип «трудно», из всех источников изобр и всех ПИВ? Является ли это чем-то, что я создал бы функцию для и передал бы dataframe, или есть более простая операция для фильтрации данных по этим критериям?

ответ

1

Простой способ для выполнения маскарад, предполагается ваш DataFrame под названием df, это будет что-то вроде этого:

masked = (df['emld'] == 'aol.com') & (df['bounce_type'] == 'hard') 
# then the result will be 
df[masked] 

на коротких столах версии в одной строке:

df[(df['emld'] == 'aol.com') & (df['bounce_type'] == 'hard')] 

Чтобы просто вернуть source_ip и tids колонок:

df[masked][['source_ip', 'tids']] 

or,

df[(df['emld'] == 'aol.com') & (df['bounce_type'] == 'hard')][['source_ip', 'tids']] 

Надеюсь, это поможет.

+0

Очень полезно. Спасибо! – metersk

+0

@Meepl, рад, что это помогает :) – Anzel