/ / Pandas série TypeError a ValueError pri použití datetime - python, pandas

Pandas série TypeError a ValueError pri použití datetime - python, pandas

Nižšie uvedený kód funguje správne (podľa očakávania):

import dateutil
from pandas import Series
timestamp = dateutil.parser.parse("2014-09-30 00:00:00")
ser = Series()
ser["no_num"] = "string is fine"
ser["time"] = timestamp
# works

ser = Series()
ser["time"] = timestamp
# works

Ale raz ser["no_num"] je nastavená na číslo, zvyšuje TypeError:

ser = Series()
ser["no_num"] = 5.0
ser["time"] = timestamp
# TypeError: invalid type promotion

Veci sa dostanú zbytočne, ak pridelíte timestamp keď je index najprv definovaný:

ser = Series(index=["time"])
ser["time"] = timestamp
# ValueError: ["t" "i" "m" "e"] not contained in the index

Je to chyba alebo nejako očakávané správanie?

Môj Python je 3.4.1 a Pandas je 0.14.1.

odpovede:

3 pre odpoveď č. 1

Série sú jednozložkové. Umiestnenie rôznych typov v jednom kontajneri, ak je to možné, sa neodporúča. Série sa zmení dtype tak, aby vyhovovala dtypes pri ich pridávaní (čo FYI nie je efektívne vôbec, lepšie prejsť do zoznamu na prvom mieste).

Váš príklad zlyhá, pretože séria je už float dtype a nemôže držať a Timestamp čo je objekt.

Môžete to urobiť, ak naozaj chcete.

In [42]: ser = Series([5.0,timestamp],["no_num","time"])

In [43]: ser
Out[43]:
no_num                      5
time      2014-09-30 00:00:00
dtype: object