python key value list to panda series python key value list to panda series numpy numpy

python key value list to panda series


In [34]: pd.Series(*zip(*((b,a) for a,b in data)))Out[34]: 2008-07-15 15:00:00    0.1342008-07-15 16:00:00    0.0002008-07-15 17:00:00    0.0002008-07-15 18:00:00    0.0002008-07-15 19:00:00    0.0002008-07-15 20:00:00    0.0002008-07-15 21:00:00    0.0002008-07-15 22:00:00    0.0002008-07-15 23:00:00    0.0002008-07-16 00:00:00    0.000dtype: float64

Or, eschewing the insane desire to make one-liners:

dates, vals = zip(*data)s = pd.Series(vals, index=dates)

If the data is extremely long, you can avoid creating the intermediate tuples by using itertools.izip:

import itertools as ITdates, vals = IT.izip(*data)s = pd.Series(vals, index=dates)


You can use zip and splat to unpack your arguments as below.

import pandas as pdmy_list = [(datetime.datetime(2008, 7, 15, 15, 0), 0.134),         (datetime.datetime(2008, 7, 15, 16, 0), 0.0),         (datetime.datetime(2008, 7, 15, 17, 0), 0.0),         (datetime.datetime(2008, 7, 15, 18, 0), 0.0),         (datetime.datetime(2008, 7, 15, 19, 0), 0.0),         (datetime.datetime(2008, 7, 15, 20, 0), 0.0),         (datetime.datetime(2008, 7, 15, 21, 0), 0.0),         (datetime.datetime(2008, 7, 15, 22, 0), 0.0),         (datetime.datetime(2008, 7, 15, 23, 0), 0.0),         (datetime.datetime(2008, 7, 16, 0, 0), 0.0)]ts = pd.Series(zip(*my_list))

zip(*my_list) effectively creates two tuples out of your data, one is a tuple of your datetime objects, one is your values. These two are then passed as the arguments to pd.Series.


Try

d = {}for i in my_list:    d[i[0]] = i[1]s = pd.series (d)