Поиск строк деталей в заголовке python pandas - PullRequest
0 голосов
/ 15 ноября 2018

Я думаю, что прочитал все подобные посты и не нашел то, что мне нужно.

У меня есть несколько файлов .csv, которые в принципе похожи, но могут иметь несколько разные имена заголовков, столбцы расположены по-разному и т. Д. Я вызываю их, используя pd.read_csv:

df = pd.read_csv('MyFile.csv', delimiter=';')

Вот часть примера заголовка CSV-файла:

Index(['1. Datum', '2. Zeit', '3. Tunnellaenge. m', '4. Vermessung: Hor. Ablage der Maschine. mm', '5. Vermessung: Vert. Ablage der Maschine. mm', ………... '21. SR:Drehzahl. rpm', '22. SR:Erddruck Schild. bar', '23. STZ:Gesamtkraft. kN', 'Unnamed: 23'], dtype='object'

Я хочу, чтобы мой код просматривал заголовок и находил нужный мне столбец (на основе строк детали). Например, мне всегда нужен столбец '3. Tunnellaenge. m ', имя обычно не меняется, поэтому я бы использовал:

df['length'] = df.filter(like='laenge')

Обычно это работает, но что если я захочу найти ключевые слова "laenge" и / o "length"?

Как и в случае с заголовком '4. Vermessung: Хор. Ablage der Maschine. мм», . Здесь я хочу, чтобы df.filter возвращал столбец, который включает 'Hor' И 'Maschine' . Как я мог это сделать? Я также попробовал функцию 'regex' , но у меня она не сработала. Не лучше ли использовать функцию str.contains () ?

Это очень важно, так как у меня много разных файлов CSV и я не хочу каждый раз корректировать код.

Спасибо.

1 Ответ

0 голосов
/ 15 ноября 2018

Использование:

m1 = df.columns.str.contains('laenge')
m2 = df.columns.str.contains('length')
m = m1 & m2

df1 = df.loc[:, m]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...