2016-07-21 2 views
2

Итак, после того, как я создаю dataframe в пандах, у меня есть функция, которая капитализирует заголовки. Но когда я пытаюсь получить доступ к данным dataframe после заглавной буквы, я получаю ошибку ошибки сегментации. Если я попытаюсь получить к нему доступ до применения функции, у меня нет никаких проблем. Что я могу делать неправильно?Python Pandas - Ошибка сегментации после переименования столбцов?

reader = pd.read_csv(inFile) 

def capitalize_headers(df): 
    for i in range(len(list(df.columns.values))): 
     df.columns.values[i] = (df.columns.values[i]).upper() 

capitalize_headers(reader) 

print reader['ColumnName'] 

ответ

2

Если вы заглавны все имена столбцов, то доступ к столбцу с строчными символами вызовет ошибку.

В частности, линия

df.columns.values[i] = (df.columns.values[i]).upper() 

преобразует 'columnname' к 'COLUMNNAME'. Доступ к столбцам в Pandas чувствителен к регистру, поэтому теперь вы получите доступ к этой колонке с df['COLUMNNAME'].

Кроме того, здесь более эффективный/pythonic способ сделать это, используя Pandas str methods.

df.columns = df.columns.str.capitalize() 
+0

Спасибо за помощь! Я сожалею, что плохо. Я попытался проверить [COLUMNNAME], и это дает мне ту же ошибку. Кроме того, поскольку я опубликовал это и работал над этим, мои ошибки переключились на KeyError: «COLUMNNAME» – MrDinkleburg

+0

Я получаю ошибку сегментации, хотя все же, если попытаюсь распечатать dataframe – MrDinkleburg

+0

На самом деле, хорошо, как только я выполнил вашу функцию капитализации, все сработало! Мне пришлось изменить его, но для df.columns.to_series(). Capitalize(), чтобы заставить его работать. Еще раз спасибо всем за помощь! – MrDinkleburg

Смежные вопросы