2016-06-16 57 views
5

quando cerco di convertire tuple per i panda dataframe ottengo il seguente errore:Errore durante la conversione di tuple di Pandas dataframe

DataFrame constructor not properly called!

Sto usando il seguente codice

columnlist=["Timestamp","Price","Month","Day","DayofWeek","tDaysleftMonth","tDayinMonth","tDayinWeek"] 
tickerData=pd.DataFrame(tickerDataRaw,columns=columnlist) 

I dati sono stati caricati a tuple da un database MySQL,

Si prega di trovare uno screenshot dei dati. Data I am trying to convert

+0

Sto usando il seguente codice columnlist = [ "Timestamp", "prezzo", "Mese", "Giorno", "DayofWeek", "tDaysleftMonth", "tDayinMonth", "tDayinWeek"] tickerData = pd.DataFrame (tickerDataRaw, columns = columnlist) –

+0

Se la mia risposta è stata utile, non dimenticare [accept] (https://stackoverflow.com/help/someone-answers) - fai clic sul segno di spunta ('v ') accanto alla risposta per passare da grigio a compilato. Grazie. – jezrael

risposta

6

Penso che si possa utilizzare DataFrame.from_records con la conversione tuples a list:

import pandas as pd 

tuples = ((1,2,3),(4,6,7),(7,3,6),(8,2,7),(4,6,3),(7,3,6)) 

columnlist = ['a','b','c'] 
df = pd.DataFrame.from_records(list(tuples), columns=columnlist) 
print (df) 
    a b c 
0 1 2 3 
1 4 6 7 
2 7 3 6 
3 8 2 7 
4 4 6 3 
5 7 3 6 

Un'altra soluzione con DataFrame costruttore solo:

import pandas as pd 

tuples = ((1,2,3),(4,6,7),(7,3,6),(8,2,7),(4,6,3),(7,3,6)) 

columnlist = ['a','b','c'] 
df = pd.DataFrame(list(tuples), columns=columnlist) 
print (df) 
    a b c 
0 1 2 3 
1 4 6 7 
2 7 3 6 
3 8 2 7 
4 4 6 3 
5 7 3 6 

EDIT:

Se la verifica DataFrame e il parametro data :

data : numpy ndarray (structured or homogeneous), dict, or DataFrame

Dict can contain Series, arrays, constants, or list-like objects

+0

Se la risposta mia o di 'Matt07' è stata utile, non dimenticare [accetta] (http://meta.stackexchange.com/a/5235/295067). Grazie. – jezrael

0

Secondo il Dataframe documentation page, i dati è necessario per essere

numpy ndarray (structured or homogeneous), dict, or DataFrame

Il modo più semplice per risolvere il problema è simplty caricare i dati in un array NumPye dovrebbe funzionare bene.

>>> tuples = ((1,2,3),(1,2,3),(1,2,3)) 
>>> columns = ["A", "B", "C"] 
>>> pd.DataFrame(tuples, columns=columns) 
PandasError: DataFrame constructor not properly called! 

>>> pd.DataFrame(np.array(tuples), columns=columns) 
    A B C 
0 1 2 3 
1 1 2 3 
2 1 2 3