2017-02-10 11 views
5

Mam dane w słowniku Pythona jak:przypisać dtype z from_dict

data = {u'01-01-2017 22:34:43:871': [u'88.49197', u'valid'], 
     u'01-01-2017 11:23:43:803': [u'88.49486', u'valid'], 
     u'02-01-2017 03:11:43:898': [u'88.49773', u'valid'], 
     u'01-01-2017 13:54:43:819': [u'88.50205', u'valid']} 

mogę przekonwertować go do Dataframe pandy z:

data = pandas.DataFrame.from_dict(data, orient='index') 

ale nie jestem w stanie użyć parametru dtype z from_dict. Chciałbym przekonwertować indeks na datetime z podobnej pierwszej kolumny, aby unosić i trzecią na łańcuch.

Próbowałem:

pandas.DataFrame.from_dict((data.values()[0]), orient='index', 
               dtype={0: 'float', 1:'str'}) 

ale to nie działa.

+0

są przechodzącą 'data' do konstruktora 'from_dict', prawda? Ponieważ nie zaakceptuje listy ... –

+0

Co powiesz na 'pd.DataFrame (dane) .T'? – DyZ

+0

@ juanpa.arrivillaga: Przepraszam, skopiowałem z mojego prawdziwego kodu, gdzie rzeczy są nieco inne. naprawiono: mijam dyktando –

Odpowiedz

2

Wydaje się to być stałym problem z niektórymi metodami konstruktora pandy: How to set dtypes by column in pandas DataFrame

Zamiast dtype argument łańcuchowym .astype może załatwić sprawę:

pandas.DataFrame.from_dict(data, orient='index').astype({0: float, 1:str}) 
+0

byłoby znacznie lepiej zrobić konwersję w czasie budowy. Ponadto muszę również przekonwertować indeks. –

+0

@RuggeroTurra tak, wydaje się, że istnieje błąd, więc jest to obejście problemu. –

Powiązane problemy