Как проверить, заканчивается ли столбец буквами a или b в пандах - PullRequest
0 голосов
/ 10 октября 2018

Мне нужно отфильтровать столбцы по последнему символу, проверяя на наличие нескольких символов.

import numpy as np
import pandas as pd

df = pd.read_table("F:\\bridges.txt", names = ['IDENTIF','RIVER', 'LOCATION', 'ERECTED', 'PURPOSE', 'LENGTH', 'LANES', 
 'CLEAR-G', 'T-OR-D', 'MATERIAL', 'SPAN', 'REL-L', 'TYPE']) 

print(df.columns[df.columns.str.endswith('N' or 'H' or 's') ])

Вывод:

Index(['LOCATION', 'SPAN'], dtype='object')

Здесь я не получаю все столбцы, заканчивающиеся либо N, H или s.

Ответы [ 2 ]

0 голосов
/ 10 октября 2018

Вы можете использовать pd.Index.str.endswith с tuple с последующим логическим индексированием:

L = ['IDENTIF','RIVER', 'LOCATION', 'ERECTED', 'PURPOSE', 'LENGTH',
     'LANES', 'CLEAR-G', 'T-OR-D', 'MATERIAL', 'SPAN', 'REL-L', 'TYPE']

df = pd.DataFrame(columns=L)

cols = df.columns[df.columns.str.endswith(tuple('HNS'))]

Index(['LOCATION', 'LENGTH', 'LANES', 'SPAN'], dtype='object')

Функциональность имитирует встроенную в Python str.endswith, что позволяет указать tuple для сопоставления с несколькими элементами в качестве альтернативных условий.

0 голосов
/ 10 октября 2018
[col for col in df.columns if col[-1] in ['N', 'H', 'S']]

Если я правильно помню, атрибут columns кадра данных не является последовательностью, поэтому его нельзя рассматривать как таковой.Это список.

Для пояснения, столбцы технически не являются списками.Они представляют собой некоторые вариации особого типа индекса панд.Но для 99% всех намерений и целей они могут рассматриваться как списки.Суть, которую я пытаюсь прояснить, состоит в том, что они not Series и поэтому не имеют последовательных методов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...