код работает в spyder (python 3,7), но не в Jupyter Notebook - PullRequest
0 голосов
/ 26 января 2020

Следующий код работает в spyder

import re

price_num = []
for row in df['price']:
    price_no_nonnum = re.sub('[^0-9]','', row) # this code line works in spyder
    price_num.append(int(price_no_nonnum))

В записной книжке Jupyter появляется ошибка

import re

price_num = []
for row in df['price']:
    price_no_nonnum = re.sub('[^0-9]','', row) # this code line gives an error in  jupyter
    price_num.append(int(price_no_nonnum))

Следующая ошибка возникает в Jupyter

TypeErrorTraceback (most recent call last)
<ipython-input-13-b3f4fcbe9d89> in <module>()
      3 price_num = []
      4 for row in autos['price']:
----> 5    price_no_nonnum = re.sub("[^0-9]","", row)
      6    price_num.append(int(price_no_nonnum))
      7 

/dataquest/system/env/python3/lib/python3.4/re.py in sub(pattern, repl, string, count, flags)
    177     a callable, it's passed the match object and must return
    178     a replacement string to be used."""
--> 179     return _compile(pattern, flags).sub(repl, string, count)
    180 
    181 def subn(pattern, repl, string, count=0, flags=0):

TypeError: expected string or buffer

1 Ответ

1 голос
/ 26 января 2020

Я предполагаю, что row - это не строка, а некоторый тип данных Pandas -specifi c. Вы можете попробовать это и вообще не использовать регулярные выражения:

price_num = []
for row in df['price']:
    try:
        price = int(row)
    except ValueError:
        pass
    else:
        price_no_nonnum = ''.join(c for c in str(row) if c.isdigit())
        price = int(price_no_nonnum)
    price_num.append(price)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...