Как исправить: метод доступа .str можно использовать только со строковыми значениями.


Одна ошибка, с которой вы можете столкнуться при использовании Python:

AttributeError : Can only use .str accessor with string values!

Эта ошибка обычно возникает, когда вы пытаетесь заменить шаблон в строковом столбце кадра данных pandas, но столбец, с которым вы работаете, на самом деле не является строкой.

В следующем примере показано, как исправить эту ошибку на практике.

Как воспроизвести ошибку

Предположим, у нас есть следующие Pandas DataFrame:

import pandas as pd

#create DataFrame
df = pd.DataFrame({'team': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
 'points': [6.5, 7.8, 8.0, 9.0, 7.5, 3.4, 6.6, 6.8],
 'assists': [5, 7, 7, 9, 12, 9, 9, 4],
 'rebounds': [11, 8, 10, 6, 6, 5, 9, 12]})

#view DataFrame
df

 team points assists rebounds
0 A 6.5 5 11
1 A 7.8 7 8
2 A 8.0 7 10
3 A 9.0 9 6
4 B 7.5 12 6
5 B 3.4 9 5
6 B 6.6 9 9
7 B 6.8 4 12

Теперь предположим, что мы пытаемся заменить каждый десятичный знак в столбце «точки» пробелом:

#attempt to replace decimal in "points" column with a blank
df['points'] = df['points']. str.replace('.', '')

AttributeError : Can only use .str accessor with string values!

Мы получаем ошибку, потому что столбец «точки» не является строковым столбцом.

Как исправить ошибку

Самый простой способ обойти эту ошибку — использовать функцию .astype(str) , прежде чем пытаться заменить какие-либо значения в столбце «точки»:

#replace decimal in "points" column with a blank
df['points'] = df['points'].astype (str). str.replace('.', '')

#view updated DataFrame
df

 team points assists rebounds
0 A 65 5 11
1 A 78 7 8
2 A 80 7 10
3 A 90 9 6
4 B 75 12 6
5 B 34 9 5
6 B 66 9 9
7 B 68 4 12

Обратите внимание, что каждое десятичное число в столбце «точки» было заменено, и мы не получаем никаких ошибок, так как мы использовали функцию .astype(str) перед попыткой заменить какие-либо значения в столбце «точки».

Примечание.Полную документацию по функции replace() можно найти здесь .

Дополнительные ресурсы

В следующих руководствах объясняется, как исправить другие распространенные ошибки в Python:

Как исправить KeyError в Pandas
Как исправить: ValueError: невозможно преобразовать число с плавающей запятой NaN в целое число
Как исправить: ValueError: операнды не могли транслироваться вместе с фигурами

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.