Как выбрать столбцы из dataframe с помощью регулярных выражений У меня есть dataframe в python pandas. Структура блока данных выглядит следующим образом: a b c d1 d2 d3 10 14 12 44 45 78 Я хотел бы выбрать столбцы, начинающиеся с d. Есть простой способ достичь этого в python. Ответ 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
Ответ 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