Как проверить, заканчивается ли столбец буквами a или b в пандах

1

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

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.

Теги:
string
pandas
python-3.x
indexing

2 ответа

0
Лучший ответ

Вы можете использовать pd.Index.str.endswith с tuple, а затем Boolean indexing:

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
[col for col in df.columns if col[-1] in ['N', 'H', 'S']]

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню