Here is how to create a DataFrame where each series is a row.

For a single Series (resulting in a single-row DataFrame):

Copyseries = pd.Series([1,2], index=['a','b'])
df = pd.DataFrame([series])

For multiple series with identical indices:

Copycols = ['a','b']
list_of_series = [pd.Series([1,2],index=cols), pd.Series([3,4],index=cols)]
df = pd.DataFrame(list_of_series, columns=cols)

For multiple series with possibly different indices:

Copylist_of_series = [pd.Series([1,2],index=['a','b']), pd.Series([3,4],index=['a','c'])]
df = pd.concat(list_of_series, axis=1).transpose()

To create a DataFrame where each series is a column, see the answers by others. Alternatively, one can create a DataFrame where each series is a row, as above, and then use df.transpose(). However, the latter approach is inefficient if the columns have different data types.

Answer from Jaan on Stack Overflow
🌐
Pandas
pandas.pydata.org › pandas-docs › stable › reference › api › pandas.Series.html
pandas.Series — pandas 3.0.3 documentation
If the index is not None, the resulting Series is reindexed with the index values. dtypestr, numpy.dtype, or ExtensionDtype, optional · Data type for the output Series. If not specified, this will be inferred from data. See the user guide for more usages. ... The name to give to the Series. ... Whether to copy input data, only relevant for array, Series, and Index inputs (for other input, e.g. a list, a new array is created anyway).
🌐
GeeksforGeeks
geeksforgeeks.org › python › convert-given-pandas-series-into-a-dataframe-with-its-index-as-another-column-on-the-dataframe
Convert given Pandas series into a dataframe with its index as another column on the dataframe - GeeksforGeeks
July 15, 2025 - Syntax: Dataframe.reset_index(level=None, drop=False, name=None, inplace=False) Return: Dataframe. Example 1: We will convert given Pandas series into a dataframe with its index as another column.
🌐
TutorialsPoint
tutorialspoint.com › creating-a-dataframe-from-pandas-series
Creating a Dataframe from Pandas series
April 20, 2023 - Now, we can create a DataFrame from the series object using the `pd.DataFrame()` method. For example, ... This will create a DataFrame with two columns: one for the index and one for the values in the series. To assign a name to the column containing the values in the series, we can use the ...
🌐
Favtutor
favtutor.com › articles › convert-pandas-series-to-dataframe
Convert Pandas Series to DataFrame (3 Methods with Examples)
December 1, 2023 - Simply put, this method adds an extra column as the index of the series and converts it into a DataFrame. Let us learn how to do it with an example: import pandas as pd # Create a Series s = pd.Series([1, 2, 3], index=['a', 'b', 'c']).renam...
🌐
GeeksforGeeks
geeksforgeeks.org › creating-a-dataframe-from-pandas-series
Creating a dataframe from Pandas series - GeeksforGeeks
September 29, 2023 - Series can only contain a single list with an index, whereas Dataframe can be made of more than one series or we can say that a Dataframe is a collection of series that can be used to analyze the data.
🌐
w3resource
w3resource.com › python-exercises › pandas › python-pandas-data-series-exercise-36.php
Pandas Data Series: Convert given series into a dataframe with its index as another column on the dataframe - w3resource
Write a Pandas program to convert given series into a dataframe with its index as another column on the dataframe. ... import numpy as np import pandas as pd char_list = list('ABCDEFGHIJKLMNOP') num_arra = np.arange(8) num_dict = dict(zip(char_list, ...
🌐
Data Science Dojo
discuss.datasciencedojo.com › python
How to transform a Pandas Series index into a DataFrame column? - Python - Data Science Dojo Discussions
February 16, 2023 - I have faced this problem several times and found a way to solve it using the reset_index() method in Pandas. This method adds a new sequential index to the series and converts the previous index into a column.
Find elsewhere
🌐
W3Schools
w3schools.com › python › pandas › pandas_series.asp
Pandas Series
Create a Series using only data from "day1" and "day2": import pandas as pd calories = {"day1": 420, "day2": 380, "day3": 390} myvar = pd.Series(calories, index = ["day1", "day2"]) print(myvar) Try it Yourself » · Data sets in Pandas are usually multi-dimensional tables, called DataFrames.
🌐
Vultr Docs
docs.vultr.com › python › third-party › pandas › Series › to_frame
Python Pandas Series to_frame() - Convert to DataFrame | Vultr Docs
December 27, 2024 - Understand that the original index of the Series is retained in the DataFrame. Convert the Series and verify the index remains. ... series_data = pd.Series([100, 200, 300], index=['a', 'b', 'c']) data_frame = series_data.to_frame() print(data_frame) Explain Code · The Series here is created with a custom index ['a', 'b', 'c']. Post-conversion, these indices are preserved in the DataFrame, maintaining the link between the original data structure and the new one.
🌐
Pandas
pandas.pydata.org › docs › reference › api › pandas.Index.to_frame.html
pandas.Index.to_frame — pandas 3.0.3 documentation
Convert Series to DataFrame. ... >>> idx = pd.Index(["Ant", "Bear", "Cow"], name="animal") >>> idx.to_frame() animal animal Ant Ant Bear Bear Cow Cow · By default, the original Index is reused. To enforce a new Index:
🌐
Finxter
blog.finxter.com › 5-best-ways-to-create-a-pandas-dataframe-from-a-series
5 Best Ways to Create a Pandas DataFrame from a Series – Be on the Right Side of Change
It is particularly useful when you want to quickly turn a Series into a DataFrame with a single method call. By default, the Series name becomes the column name in the resulting DataFrame, and the Series index becomes the DataFrame index. ... import pandas as pd # Create a series scores_series = pd.Series([89, 92, 78, 85], name='Scores') # Convert the series to a dataframe scores_df = scores_series.to_frame()
🌐
Pandas
pandas.pydata.org › pandas-docs › stable › reference › api › pandas.Index.to_series.html
pandas.Index.to_series — pandas 3.0.3 documentation
Create a Series with both index and values equal to the index keys. Useful with map for returning an indexer based on an index. ... Index of resulting Series. If None, defaults to original index. ... Name of resulting Series. If None, defaults to name of original index. ... The dtype will be based on the type of the Index values. ... Convert an Index to a DataFrame...
🌐
GeeksforGeeks
geeksforgeeks.org › python › combine-two-pandas-series-into-a-dataframe
Combine Two Pandas Series into a DataFrame - GeeksforGeeks
January 30, 2026 - Explanation: pd.merge(a, b, left_index=True, right_index=True) joins the series using their index as a reference. join() combines two series by first converting one series into a DataFrame and then joining the other series as a column.
🌐
GitHub
github.com › pandas-dev › pandas › issues › 1494
When constructing DataFrame from list of Series use names for index. · Issue #1494 · pandas-dev/pandas
June 18, 2012 - Workaround is to use DataFrame.from_items() In [21]: series = [pandas.Series(np.random.rand(3), name=c) for c in list('abcdefg')] In [22]: df = pandas.DataFrame(series) In [23]: df Out[23]: 0 1 2 0 0.609676 0.023603 0.687154 1 0.060276 0.173545 0.216510 2 0.016216 0.078186 0.493883 3 0.648037 0.640642 0.652898 4 0.590155 0.132365 0.257735 5 0.590068 0.124617 0.104589 6 0.364781 0.473282 0.218554 In [24]: df = pandas.DataFrame.from_items([(s.name, s) for s in series]).T In [25]: df Out[25]: 0 1 2 a 0.609676 0.023603 0.687154 b 0.060276 0.173545 0.216510 c 0.016216 0.078186 0.493883 d 0.648037 0.640642 0.652898 e 0.590155 0.132365 0.257735 f 0.590068 0.124617 0.104589 g 0.364781 0.473282 0.218554
Author   pandas-dev
Top answer
1 of 2
3

I don't have your dataframe, but here's an example with small data to show that pandas contructs the dataframe as expected (using pandas 0.15.1 and python 3.4). As expected, NaNs are introduced when the indices don't match.

The last row of your data is ('intercept', ''), while all the other rows are numbers. So ('intercept', '') goes to the index of each series, and this is probably causing the values in the index to be "promoted" to strings.

>> s1 = pd.Series([1,2,3], index=pd.MultiIndex.from_tuples([(1,1),(1,2),(1,3)], names=['a','b']))
>>> s1
a  b
1  1    1
   2    2
   3    3
dtype: int64
>>> s2 = pd.Series([100,200,300], index=pd.MultiIndex.from_tuples([(1,2),(1,3),(1,4)], names=['a','b']))
>>> 
>>> s2
a  b
1  2    100
   3    200
   4    300
dtype: int64
>>> df = pd.DataFrame({'s1':s1, 's2':s2})
>>> df
     s1   s2
a b         
1 1   1  NaN
  2   2  100
  3   3  200
  4 NaN  300
>>> df.index.values
array([(1, 1), (1, 2), (1, 3), (1, 4)], dtype=object)
2 of 2
2

The reason that it is converting the indexes to strings is because the last index

intercept                             [-11.4551819018]

in your series data is a string. The documentation for the Pandas data frames state that when constructing a data frame from a series the data frame keeps the same indexing from the series which causes the conversion to all strings because of the last line in the data.

Your solution to create two data frames and then joining them works because the indexing is consistent since you're using the same data structure (e.g. data frame) rather than converting from one data structure (series) to another (data frame). It seems to be a Pandas specific thing. I would stick with your solution.

🌐
Saturn Cloud
saturncloud.io › blog › combining-two-series-into-a-dataframe-in-pandas
Combining two Series into a DataFrame in pandas | Saturn Cloud Blog
June 19, 2023 - We then used pd.concat() to concatenate s1 and s2 along axis 1 (columns) to create a DataFrame df. The resulting DataFrame has two columns, with the values from s1 in the first column and the values from s2 in the second column.
🌐
Medium
medium.com › @nishi.paul.in › dataframe-and-series-in-pandas-complete-detail-bbfa0f7e7ae6
Dataframe and Series in Pandas: Complete Detail | by Nishi Paul | Medium
December 13, 2023 - Row and Column Selection e. Mathematical Operations in columns f. Conditional Selection from columns g. Deleting Columns h. Creating new columns ... In order to use pandas library, we need to first import it. import pandas as pd #pd is commonly used alias for pandas · Series is 1D array like structure having labels. It represents a single column in a dataframe and can hold any type of data. There are multiple ways to create a Series and we will see it all - scalar_series = pd.Series(10, index = range(6)) scalar_series Output - 0 10 1 10 2 10 3 10 4 10 5 10 dtype: int64