Python AttributeError: у объекта 'Series' нет атрибута 'isdigit' - PullRequest
0 голосов
/ 11 марта 2019

Я пытаюсь заменить число пустым, если строка / столбец содержит числа.Я пробовал следующее, он продолжает жаловаться isdigit не существует?Я пытался преобразовать столбец в строку и не помогает.Есть ли другие операторы, которые я мог бы использовать для фрейма данных панд?

data = ['123567','1547892','2547879','ABC','3D']
df1 = pd.DataFrame(data)
df1.columns = ['col1']

df1.col1 = str(df1.col1)
if len(df1.col1) < 8 and df1.col1.isdigit(): # errors
    df1.col1 == ''
    print(df1)

Ищем вывод, подобный этому:

col1
0   
1   
2   
3   ABC
4   3D

1 Ответ

1 голос
/ 11 марта 2019

Чтобы получить доступ к строковым методам в серии, вам необходимо сделать это через атрибут .str Series:

df1.col1.str.isdigit()

См. Series.str.isdigit() для документации.

Вы можете использовать это как логический индекс и напрямую назначать выбранным строкам:

df1.col1[df1.col1.str.isdigit()] = ''

См. Работа с текстовыми данными .

Не используйте df1.col1.str.isdigit() в операторе if, так как логический массив не является истинным или ложным сам по себе, это массив логических значений и поэтому выдает ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all(), если используется в логическом контексте.

Демо-версия:

>>> import pandas as pd
>>> data = ['123567','1547892','2547879','ABC','3D']
>>> df1 = pd.DataFrame(data)
>>> df1.columns = ['col1']
>>> df1
      col1
0   123567
1  1547892
2  2547879
3      ABC
4       3D
>>> df1.col1[df1.col1.str.isdigit()] = ''
>>> df1
  col1
0
1
2
3  ABC
4   3D
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...