преобразование столбца значений объекта в число с плавающей точкой или целые числа.ValueError: недопустимый литерал для int () с основанием 10: '1,026,765' - PullRequest
0 голосов
/ 26 сентября 2018
  dfproduction = pd.read_csv('https://raw.githubusercontent.com/chessybo/Oil-Spill-map/master/Oil%20Spill%20Data%20-%20Crude%20Oil%2C%20Gas%20Well%20Liquids%20or%20Associated%20Products%20(H-8)/production%20data/Crude%20Oil%20Production%20and%20Well%20Counts%20(since%201935).csv', encoding='utf-8')

Я хочу преобразовать эти данные в числа (а именно в столбец «Производство сырой нефти (Мббл)»), например, float или int.

В настоящее время тип d - это объект

    print(dfproduction.dtypes)
MasterYear                                  int64
Crude Oil Production (Mbbl)                object
Daily Avg. Production (Mbbl/day)           object
Number of Producing Wells                  object
Percent Change in Production               object
Avg. Per Well Production (bbl/day)        float64
Crude Oil Reserves as of Jan. 1 (Mbbl)     object
info                                       object
dtype: object

однако любая попытка сделать это приводит к некоторой форме ошибки.

dfproduction['Crude Oil Production (Mbbl)'].astype('int')
ValueError: invalid literal for int() with base 10: '1,026,765'

dfproduction['Crude Oil Production (Mbbl)'].astype('float')
ValueError: could not convert string to float: '375,617'

ОБНОВЛЕНИЕ:

Проблема заключалась в запятых в числах, я удалил запятые и заново загрузил данные.только теперь я получаю следующую ошибку ..

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xa0 in position 83: invalid start byte

1 Ответ

0 голосов
/ 26 сентября 2018

Используйте str.replace() для удаления запятых.

dfproduction['Crude Oil Production (Mbbl)'].str.replace(r',', '').astype('int')
...