Як виправити: можна використовувати лише інструмент доступу .str із рядковими значеннями


Під час використання Python може виникнути така помилка:

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

Ця помилка зазвичай виникає, коли ви намагаєтеся замінити шаблон у стовпці рядка pandas DataFrame, але стовпець, з яким ви працюєте, насправді не є рядком.

У наступному прикладі показано, як виправити цю помилку на практиці.

Як відтворити помилку

Припустімо, що у нас є наступні pandas DataFrame:

 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! 

Ми отримуємо помилку, оскільки стовпець “points” не є рядковим стовпцем.

Як виправити помилку

Найпростіший спосіб обійти цю помилку — скористатися функцією .astype(str) перед спробою замінити значення в стовпці «points»:

 #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

Зауважте, що кожен десятковий знак у стовпці «points» було замінено, і ми не отримуємо жодних помилок, оскільки ми використовували функцію .astype(str) перед спробою замінити значення в стовпці «points».

Примітка . Повну документацію щодо функції replace() можна знайти тут .

Додаткові ресурси

У наступних посібниках пояснюється, як виправити інші типові помилки в Python:

Як виправити KeyError у Pandas
Як виправити: ValueError: неможливо перетворити float NaN на int
Як виправити: ValueError: операнди не можна транслювати з фігурами

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *