Подтвердить что ты не робот

Как выбрать столбцы из dataframe с помощью регулярных выражений

У меня есть dataframe в python pandas. Структура блока данных выглядит следующим образом:

   a    b    c    d1   d2   d3 
   10   14   12   44  45    78

Я хотел бы выбрать столбцы, начинающиеся с d. Есть простой способ достичь этого в python.

4b9b3361

Ответ 1

Вы можете использовать DataFrame.filter следующим образом:

import pandas as pd

df = pd.DataFrame(np.array([[2,4,4],[4,3,3],[5,9,1]]),columns=['d','t','didi'])
>>
   d  t  didi
0  2  4     4
1  4  3     3
2  5  9     1

df.filter(regex=("d.*"))

>>
   d  didi
0  2     4
1  4     3
2  5     1

Идея состоит в том, чтобы выбрать столбцы regex

Ответ 2

Используйте select:

import pandas as pd

df = pd.DataFrame([[10, 14, 12, 44, 45, 78]], columns=['a', 'b', 'c', 'd1', 'd2', 'd3'])

df.select(lambda col: col.startswith('d'), axis=1)

Результат:

   d1  d2  d3
0  44  45  78

Это приятное решение, если вам не нравятся регулярные выражения.

Ответ 3

Вы можете использовать понимание списка для итерации по всем именам столбцов в вашем DataFrame df, а затем выбирать только те, которые начинаются с 'd'.

df = pd.DataFrame({'a': {0: 10}, 'b': {0: 14}, 'c': {0: 12},
                   'd1': {0: 44}, 'd2': {0: 45}, 'd3': {0: 78}})

Использовать список, чтобы перебирать столбцы в фрейме данных и возвращать их имена (c ниже - это локальная переменная, представляющая имя столбца).

>>> [c for c in df]
['a', 'b', 'c', 'd1', 'd2', 'd3']

Затем выберите только те, которые начинаются с 'd'.

>>> [c for c in df if c[0] == 'd']  # As an alternative to c[0], use c.startswith(...)
['d1', 'd2', 'd3']

Наконец, передайте этот список столбцов в DataFrame.

df[[c for c in df if c.startswith('d')]]
>>> df
   d1  d2  d3
0  44  45  78