Удаление строк в серии заголовков - PullRequest
0 голосов
/ 14 ноября 2018

У меня есть ряд столбцов в кадре данных:

df = pd.DataFrame({'Date':[1990],'State Income of Alabama':[1], 
                   'State Income of Washington':[2],
                   'State Income of Arizona':[3]})

Все заголовки имеют одинаковое количество строк и все имеют одинаковые строки с ровно одним пробелом между именем государства.

Я хочу вынуть строки 'State Income of' и оставить состояние в такте в качестве нового заголовка для набора, чтобы они просто читали:

Alabama  Washington  Arizona
1        2           3

Я пытался использовать функцию замены столбцов в Python, например:

df.columns = df.columns.str.replace('State Income of ', '')

Но это не дает мне желаемого результата.

Ответы [ 3 ]

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

Вот еще одно решение, которого нет:

df.rename(columns=lambda x: x.split()[-1])

или на месте:

df.rename(columns=lambda x: x.split()[-1], inplace = True)
0 голосов
/ 14 ноября 2018

Для этого можно использовать модуль re:

>>> import pandas as pd
>>> df = pd.DataFrame({'State Income of Alabama':[1], 
...                    'State Income of Washington':[2],
...                    'State Income of Arizona':[3]})
>>> 
>>> import re
>>> df.columns = [re.sub('State Income of ', '', col) for col in df]
>>> df
   Alabama  Washington  Arizona
0        1           2        3

re.sub('State Income of', '', col) заменит любое вхождение 'State Income of' пустой строкой (с "ничем" эффективно) в строке col.

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

У меня твой путь работает, но есть альтернативы:

Один из способов - разделить имена столбцов и взять последнее слово:

df.columns = [i.split()[-1] for i in df.columns]
>>> df
   Alabama  Arizona  Washington
0        1        3           2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...