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