Выберите строки из Dataframe и включите еще один столбец Python - PullRequest
1 голос
/ 14 октября 2019

Я новичок в Python, Как я могу выбрать столбцы из кадра данных, которые заканчиваются на _old и включают B столбец в качестве окончательного вывода? Вот мой фрейм данных:

import pandas as pd
import numpy as np
df1 = pd.DataFrame({'A': 'foo bar foo bar foo bar foo foo'.split(),
                   'B': 'james weker john mark jane der liv vam'.split(),
                   'C_old': np.arange(8), 'D_old': np.arange(8) * 2})
print(df1)

Я пробовал это, который выбирает только столбцы, которые заканчиваются на _old , но я должен включить столбец B в вывод

df1[df1.columns[pd.Series(df1.columns).str.endswith('_old')]]

Мои ОЖИДАЕМЫЕ выходные данные должны выглядеть следующим образом

import pandas as pd
import numpy as np
df1 = pd.DataFrame({
                   'B': 'james weker john mark jane der liv vam'.split(),
                   'C_old': np.arange(8), 'D_old': np.arange(8) * 2})
print(df1)

1 Ответ

5 голосов
/ 14 октября 2019

Используйте DataFrame.filter с регулярным выражением - $ для концов строки, | для or и ^B$ для выбора по столбцу B (^ для началастрока)

df = df1.filter(regex='_old$|^B$')

Вы можете выбирать по маскам - используйте DataFrame.loc для выбора всех строк (:) и столбцов по условию:

df = df1.loc[:, df1.columns.str.endswith('_old') | (df1.columns == 'B')]

Или используйте Index.union для добавления B в столбцы:

df = df1[df1.columns[df1.columns.str.endswith('_old')].union(['B'])]
print (df)
       B  C_old  D_old
0  james      0      0
1  weker      1      2
2   john      2      4
3   mark      3      6
4   jane      4      8
5    der      5     10
6    liv      6     12
7    vam      7     14
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...