Как фильтровать столбцы в кадре данных Spark, когда существует много разных значений - PullRequest
0 голосов
/ 25 февраля 2020

Я отфильтровал данные Lending Club из kaggle в 9 столбцов. В столбце addr_state есть некоторые значения, которые не являются состояниями, и я хочу отфильтровать их. Вот как выглядит столбец, сгруппированный по состоянию:

df_train.groupBy('addr_state').count().orderBy('count', ascending=False).show(55)
+------------------+------+
|        addr_state| count|
+------------------+------+
|                CA|313835|
|                TX|186145|
|                NY|186137|
|                FL|161833|
|                IL| 91093|
|                NJ| 83063|
|                PA| 76893|
|                OH| 75085|
|                GA| 74159|
|                VA| 62931|
|                NC| 62708|
|                MI| 58740|
|                MD| 53985|
|                AZ| 53752|
|                MA| 51754|
|                CO| 48170|
|                WA| 47043|
|                MN| 39503|
|                IN| 37505|
|                MO| 36076|
|                CT| 35773|
|                TN| 35482|
|                NV| 32640|
|                WI| 29869|
|                SC| 27996|
|                AL| 27282|
|                OR| 26786|
|                LA| 25750|
|                KY| 21875|
|                OK| 20691|
|                KS| 19104|
|                AR| 17074|
|                UT| 14990|
|                MS| 12633|
|                NM| 11984|
|                NH| 11140|
|                HI| 10665|
|                RI| 10003|
|                WV|  8349|
|                NE|  7818|
|                DE|  6456|
|                MT|  6298|
|                DC|  5355|
|                AK|  5229|
|                ME|  4972|
|                VT|  4937|
|                WY|  4747|
|                SD|  4549|
|                ID|  4308|
|                ND|  3591|
|                IA|    14|
|debt_consolidation|    13|
|       credit_card|    10|
|             other|     5|
|    major_purchase|     5|
|             941xx|     2|
+------------------+------+

показывает только верхние 56 строк

Поэтому я хочу отфильтровать все после IA, значения категорий, такие как 'credit_card' или ' консолидация долгов'. Я хочу удалить всю строку, которая имеет эти значения из кадра данных. Каков наилучший способ сделать это? 1007 * это?

1 Ответ

0 голосов
/ 27 февраля 2020

Итак, после просмотра Pyspark есть функция для фреймов данных rlike (), где вы можете ввести регулярное выражение для фильтрации столбца:

df_train= df_train.filter(df['addr_state'].rlike('^[A-Z]{2}?'))

В этом примере фильтруется любая строка в столбце, которая не является ' t две заглавные буквы (т.е. сокращение штата).

...