how to convert pandas series to tuple of index and value
I'm looking for an efficient way to convert a series to a tuple of its index with its values.
s = pd.Series([1, 2, 3], ['a', 'b', 'c'])
I want an array, list, series, some iterable:
[(1, 'a'), (2, 'b'), (3, 'c')]
Solution 1:
Well it seems simply zip(s,s.index)
works too!
For Python-3.x, we need to wrap it with list
-
list(zip(s,s.index))
To get a tuple of tuples, use tuple()
: tuple(zip(s,s.index))
.
Sample run -
In [8]: s
Out[8]:
a 1
b 2
c 3
dtype: int64
In [9]: list(zip(s,s.index))
Out[9]: [(1, 'a'), (2, 'b'), (3, 'c')]
In [10]: tuple(zip(s,s.index))
Out[10]: ((1, 'a'), (2, 'b'), (3, 'c'))
Solution 2:
s.items()
or s.iteritems()
do this.
(If you want to get the output as a list rather than an iterator, do: list(s.items())
)