In Python 2.7, ich auf eine externe Datenquelle bin verbindet die folgende Verwendung:Ersetzen Bad Daten in Pandas Data Frame
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)
Ich erhalte die folgende Fehlermeldung:
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: ?
Es ist scheint ich, dass in einer der Float-Spalten ein '?' Symbol aus irgendeinem Grund. Ich habe mich an den Besitzer der Datenquelle gewandt, aber sie kann die zugrunde liegende Tabelle nicht ändern.
Gibt es eine Möglichkeit, falsche Daten wie Pandas zu ersetzen? Ich habe versucht, nach der read_sql_query
Anweisung ersetzen, aber ich bekomme den gleichen Fehler.
Bitte zeigen Sie die komplette Traceback. Die Verwendung von 'replace' * nach *' read_sql_query' hilft nicht, wenn Sie den Fehler bereits mit dem angezeigten Code erhalten. Wenn Sie den Fehler nicht bereits mit dem angezeigten Code erhalten, müssen Sie den Code anzeigen, der den Fehler verursacht. – BrenBarn
Entschuldigung! Ich habe den vollständigen Traceback hinzugefügt. Der obige Code verursacht den Fehler für sich. – user2752159
Können Sie die Daten mit pyodbc direkt aus der Tabelle lesen? Der Fehler scheint nichts mit Pandas zu tun zu haben. – BrenBarn