pandas Series to Dataframe using Series indexes as columns

Question:

I have a Series, like this:

series = pd.Series({'a': 1, 'b': 2, 'c': 3})

I want to convert it to a dataframe like this:

    a   b   c
0   1   2   3

pd.Series.to_frame() doesn’t work, it got result like,

    0
a   1
b   2
c   3

How can I construct a DataFrame from Series, with index of Series as columns?

Asked By: Jzou

||

Answers:

You can also try this :

df = DataFrame(series).transpose()

Using the transpose() function you can interchange the indices and the columns.
The output looks like this :

    a   b   c
0   1   2   3
Answered By: PJay

you can also try this:

a = pd.Series.to_frame(series)

a['id'] = list(a.index)

Explanation:
The 1st line convert the series into a single-column DataFrame.
The 2nd line add an column to this DataFrame with the value same as the index.

Answered By: Amir Rezaei

You don’t need the transposition step, just wrap your Series inside a list and pass it to the DataFrame constructor:

pd.DataFrame([series])

   a  b  c
0  1  2  3

Alternatively, call Series.to_frame, then transpose using the shortcut .T:

series.to_frame().T

   a  b  c
0  1  2  3
Answered By: cs95

Try reset_index. It will convert your index into a column in your dataframe.

df = series.to_frame().reset_index()
Answered By: Pritesh Shrivastava

This

pd.DataFrame([series]) #method 1

produces a slightly different result than

series.to_frame().T #method 2

With method 1, the elements in the resulted dataframe retain the same type. e.g. an int64 in series will be kept as an int64.

With method 2, the elements in the resulted dataframe become objects IF there is an object type element anywhere in the series. e.g. an int64 in series will be become an object type.

This difference may cause different behaviors in your subsequent operations depending on the version of pandas.

Answered By: S. Wong
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.