Применение верхнего регистра к столбцу в pandas dataframe

У меня возникли проблемы с применением верхнего регистра к столбцу в моем DataFrame.

dataframe df.

1/2 ID - это заголовок столбца, которому необходимо применить UPPERCASE.

Проблема состоит в том, что значения состоят из трех букв и трех чисел. Например, rrr123 является одним из значений.

df['1/2 ID'] = map(str.upper, df['1/2 ID'])

Появилась ошибка:

TypeError: descriptor 'upper' requires a 'str' object but received a 'unicode' error.

Как я могу применить верхний регистр к первым трем буквам в столбце DataFrame df?

Ответ 1

Это должно работать:

df['1/2 ID'] = map(lambda x: str(x).upper(), df['1/2 ID'])

и если вы хотите, чтобы все имена columns были в верхнем регистре:

df.columns = map(lambda x: str(x).upper(), df.columns)

Ответ 2

Если ваша версия Pandas является последней версией, вы можете просто использовать метод векторизованной строки upper:

df['1/2 ID'] = df['1/2 ID'].str.upper()

Этот метод не работает на месте, поэтому результат должен быть назначен обратно.

Ответ 3

str.upper() требуется простая старая строка Python 2

unicode.upper() хочет, чтобы unicode не был строкой (или вы получаете TypeError: дескриптор "верхний" требует объекта "unicode", но получил "str" )

Итак, я бы предложил использовать утиную печать и вызвать .upper() для каждого из ваших элементов, например.

df['1/2 ID'].apply(lambda x: x.upper(), inplace=True)