Как удалить столбцы на основе имени столбца python pandas - PullRequest
2 голосов
/ 12 апреля 2020

Я хотел бы удалить каждый столбец, который заканчивается буквой «y» в моем фрейме данных. По какой-то причине у меня есть данные, в которых каждый столбец указан дважды, и отличается только имя столбца, например:

d = {'Team': ['1', '2', '3'], 'Team_y': ['1', '2', '3'], 'Color' : ['red', 'green', 'blue'], 'Color_y' : ['red', 'green', 'blue']}
df = pd.DataFrame(data=d)
df

    Team    Team_y  Color   Color_y
0    1        1      red     red
1    2        2     green   green
2    3        3      blue    blue

Я знаю, что это какой-то формат строки. Я попытался проиндексировать последнюю букву, используя [-1], но не смог заставить ее работать. Спасибо!

Ответы [ 3 ]

2 голосов
/ 12 апреля 2020

в дополнение к ответу @ David вы можете использовать pandas str заканчивается с для исключения столбцов, заканчивающихся на '_y':

df.loc[:,~df.columns.str.endswith('_y')]

  Team  Color
0   1   red
1   2   green
2   3   blue

знак ~ (тильда) служит отрицание

1 голос
/ 12 апреля 2020

удалить столбец на основе строкового условия

df.drop([col for col in df.columns if '_y' in col],axis=1,inplace=True)

Еще лучше, если оно должно быть указано c до его окончания, тогда:

df.drop([col for col in df.columns if col.endswith('_y')],axis=1,inplace=True)
0 голосов
/ 12 апреля 2020

Использовать фильтр по регулярному выражению

df = df[df.columns.drop(list(df.filter(regex='_y')))]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...