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


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

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

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

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

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

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

 import pandas as pd

#createDataFrame
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 в int.
Как исправить: ValueError: операнды не могут быть переданы с помощью фигур.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *