Замена неверных данных в фрейме данных Pandas

В Python 2.7 я подключаюсь к внешнему источнику данных, используя следующее:

import pypyodbc
import pandas as pd
import datetime
import csv
import boto3
import os

# Connect to the DataSource
conn = pypyodbc.connect("DSN = FAKE DATA SOURCE; UID=FAKEID; PWD=FAKEPASSWORD")

# Specify the query we're going to run on it
script = ("SELECT * FROM table")

# Create a dataframe from the above query
df = pd.read_sql_query(script, conn)

Я получаю следующую ошибку:

C:\Python27\python.exe "C:/Thing.py"
Traceback (most recent call last):
  File "C:/Thing.py", line 30, in <module>
   df = pd.read_sql_query(script,conn)
  File "C:\Python27\lib\site-packages\pandas-0.18.1-py2.7-win32.egg\pandas\io\sql.py", line 431, in read_sql_query
   parse_dates=parse_dates, chunksize=chunksize)
  File "C:\Python27\lib\site-packages\pandas-0.18.1-py2.7-win32.egg\pandas\io\sql.py", line 1608, in read_query
   data = self._fetchall_as_list(cursor)
  File "C:\Python27\lib\site-packages\pandas-0.18.1-py2.7-win32.egg\pandas\io\sql.py", line 1617, in _fetchall_as_list
   result = cur.fetchall()
  File "build\bdist.win32\egg\pypyodbc.py", line 1819, in fetchall
  File "build\bdist.win32\egg\pypyodbc.py", line 1871, in fetchone
ValueError: could not convert string to float: ?

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

Есть ли способ заменить неправильные данные, как это, с помощью панд? Я пытался использовать заменить после read_sql_query Скажите, но я получаю ту же ошибку.

1 ответ

Трудно сказать наверняка, не имея ваших данных, очевидно, но вы можете попробовать установить coerce_float в Falseт.е. заменить вашу последнюю строку на

df = pd.read_sql_query(script, conn, coerce_float=False)

Смотрите документациюread_sql_query,

Другие вопросы по тегам