how to convert pandas series to tuple of index and value

piRSquared picture piRSquared · Jul 19, 2016 · Viewed 34.3k times · Source

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')]

Answer

Divakar picture Divakar · Jul 19, 2016

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'))