Выберите столбцы, которые содержат строку в pyspark - PullRequest
0 голосов
/ 21 ноября 2018

У меня есть pyspark dataframe с большим количеством столбцов, и я хочу выбрать те, которые содержат определенную строку, и другие.Например:

df.columns = ['hello_world','hello_country','hello_everyone','byebye','ciao','index']

Я хочу выбрать те, которые содержат 'hello' , а также столбец с именем 'index' , поэтому результат будет:

['hello_world','hello_country','hello_everyone','index']

Я хочу что-то вроде df.select('hello*','index')

Заранее спасибо:)

РЕДАКТИРОВАТЬ:

Я нашелбыстрый способ решить ее, поэтому я ответил себе, стиль Q & A .Если кто-то увидит мое решение и сможет предложить лучшее, я буду признателен за это

Ответы [ 3 ]

0 голосов
/ 21 ноября 2018

Я нашел быстрый и элегантный способ:

selected = [s for s in df.columns if 'hello' in s]+['index']
df.select(selected)

С помощью этого решения я могу добавить больше нужных столбцов, не редактируя цикл for, который Ali AzG предложил.

0 голосов
/ 21 ноября 2018

Вы также можете попробовать использовать функцию colRegex , представленную в Spark 2.3, где вы также можете указать имя столбца как регулярное выражение.

0 голосов
/ 21 ноября 2018

Этот пример кода делает то, что вы хотите:

hello_cols = []

for col in df.columns:
  if(('index' in col) or ('hello' in col)):
    hello_cols.append(col)

df.select(*hello_cols)
...