Есть ли лучший способ манипулировать именами столбцов в кадре данных панд? - PullRequest
1 голос
/ 24 октября 2019

Я работаю с большим фреймом данных и мне нужен способ динамического переименования имен столбцов.

Вот медленный метод, с которым я работаю:

# Create a sample dataframe
df = pd.DataFrame.from_records([
    {'Name':'Jay','Favorite Color (BLAH)':'Green'},
    {'Name':'Shay','Favorite Color (BLAH)':'Blue'},
    {'Name':'Ray','Favorite Color (BLAH)':'Yellow'},
])

# Current columns are: ['Name', 'Favorite Color (BLAH)']

# ------

# build two lambdas to clean the column names
f_clean = lambda x: x.split('(')[0] if ' (' in x else x
f_join = lambda x: '_'.join(x.split())
df.columns = df.columns.map(f_clean, f_join).map(f_join).str.lower()

# Columns are now: ['name', 'favorite_color']

Есть ли лучший метод для решения этой проблемы?

1 Ответ

1 голос
/ 24 октября 2019

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

def clean(name):

  name = name.split('(')[0] if ' (' in name else name
  name = '_'.join(name.split())
  return name

df.columns = [clean(col) for col in df.columns]

Понятно, что происходит, и не слишком многословно.

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