You can use the DataFrame constructor with lists created by to_list:

import pandas as pd

d1 = {'teams': [['SF', 'NYG'],['SF', 'NYG'],['SF', 'NYG'],
                ['SF', 'NYG'],['SF', 'NYG'],['SF', 'NYG'],['SF', 'NYG']]}
df2 = pd.DataFrame(d1)
print (df2)
       teams
0  [SF, NYG]
1  [SF, NYG]
2  [SF, NYG]
3  [SF, NYG]
4  [SF, NYG]
5  [SF, NYG]
6  [SF, NYG]

df2[['team1','team2']] = pd.DataFrame(df2.teams.tolist(), index= df2.index)
print (df2)
       teams team1 team2
0  [SF, NYG]    SF   NYG
1  [SF, NYG]    SF   NYG
2  [SF, NYG]    SF   NYG
3  [SF, NYG]    SF   NYG
4  [SF, NYG]    SF   NYG
5  [SF, NYG]    SF   NYG
6  [SF, NYG]    SF   NYG

And for a new DataFrame:

df3 = pd.DataFrame(df2['teams'].to_list(), columns=['team1','team2'])
print (df3)
  team1 team2
0    SF   NYG
1    SF   NYG
2    SF   NYG
3    SF   NYG
4    SF   NYG
5    SF   NYG
6    SF   NYG

A solution with apply(pd.Series) is very slow:

#7k rows
df2 = pd.concat([df2]*1000).reset_index(drop=True)

In [121]: %timeit df2['teams'].apply(pd.Series)
1.79 s ± 52.5 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

In [122]: %timeit pd.DataFrame(df2['teams'].to_list(), columns=['team1','team2'])
1.63 ms ± 54.3 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
Answer from jezrael on Stack Overflow
🌐
Statology
statology.org › home › pandas: how to split a column of lists into multiple columns
Pandas: How to Split a Column of Lists into Multiple Columns
August 24, 2022 - #split column of lists into two new columns split = pd.DataFrame(df['my_column'].to_list(), columns = ['new1', 'new2']) #join split columns back to original DataFrame df = pd.concat([df, split], axis=1) The following example shows how to use ...
Top answer
1 of 13
560

You can use the DataFrame constructor with lists created by to_list:

import pandas as pd

d1 = {'teams': [['SF', 'NYG'],['SF', 'NYG'],['SF', 'NYG'],
                ['SF', 'NYG'],['SF', 'NYG'],['SF', 'NYG'],['SF', 'NYG']]}
df2 = pd.DataFrame(d1)
print (df2)
       teams
0  [SF, NYG]
1  [SF, NYG]
2  [SF, NYG]
3  [SF, NYG]
4  [SF, NYG]
5  [SF, NYG]
6  [SF, NYG]

df2[['team1','team2']] = pd.DataFrame(df2.teams.tolist(), index= df2.index)
print (df2)
       teams team1 team2
0  [SF, NYG]    SF   NYG
1  [SF, NYG]    SF   NYG
2  [SF, NYG]    SF   NYG
3  [SF, NYG]    SF   NYG
4  [SF, NYG]    SF   NYG
5  [SF, NYG]    SF   NYG
6  [SF, NYG]    SF   NYG

And for a new DataFrame:

df3 = pd.DataFrame(df2['teams'].to_list(), columns=['team1','team2'])
print (df3)
  team1 team2
0    SF   NYG
1    SF   NYG
2    SF   NYG
3    SF   NYG
4    SF   NYG
5    SF   NYG
6    SF   NYG

A solution with apply(pd.Series) is very slow:

#7k rows
df2 = pd.concat([df2]*1000).reset_index(drop=True)

In [121]: %timeit df2['teams'].apply(pd.Series)
1.79 s ± 52.5 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

In [122]: %timeit pd.DataFrame(df2['teams'].to_list(), columns=['team1','team2'])
1.63 ms ± 54.3 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
2 of 13
126

Much simpler solution:

pd.DataFrame(df2["teams"].to_list(), columns=['team1', 'team2'])

Yields,

  team1 team2
-------------
0    SF   NYG
1    SF   NYG
2    SF   NYG
3    SF   NYG
4    SF   NYG
5    SF   NYG
6    SF   NYG
7    SF   NYG

If you wanted to split a column of delimited strings rather than lists, you could similarly do:

pd.DataFrame(df["teams"].str.split('<delim>', expand=True).values,
             columns=['team1', 'team2'])
🌐
datagy
datagy.io › home › pandas tutorials › pandas dataframes › pandas: split a column of lists into multiple columns
Pandas: Split a Column of Lists into Multiple Columns • datagy
June 5, 2023 - In order to split a column that contains lists of values, we can apply the .tolist() method to our Pandas DataFrame column.
🌐
Data Science Parichay
datascienceparichay.com › home › blog › split pandas column of lists into multiple columns
Split Pandas column of lists into multiple columns - Data Science Parichay
August 19, 2022 - To split a pandas column of lists into multiple columns, create a new dataframe by applying the tolist() function to the column.
🌐
Skytowner
skytowner.com › explore › splitting_column_of_lists_into_multiple_columns_in_pandas
Splitting column of lists into multiple columns in Pandas
To split a column, which contains lists, into multiple columns, use pd.concat([df, df["A"].apply(pd.Series)], axis=1).
🌐
DataScientYst
datascientyst.com › split-pandas-list-column-into-multiple-columns
How to Split Column into Multiple Columns in Pandas
February 19, 2022 - And we would like to split the column skills by delimiter into multiple columns. This time the number of elements is not fixed! We can use Pandas string method .str.split(',') in order to split the values into lists of lists.
🌐
Pandas
pandas.pydata.org › docs › reference › api › pandas.Series.str.split.html
pandas.Series.str.split — pandas 3.0.6 documentation - PyData |
Expand the split strings into separate columns. If True, return DataFrame/MultiIndex expanding dimensionality. If False, return Series/Index, containing lists of strings.
Find elsewhere
🌐
Bobby Hadz
bobbyhadz.com › blog › pandas-split-column-of-lists-into-multiple-columns
Pandas: Split a Column of Lists into Multiple Columns | bobbyhadz
April 12, 2024 - The same approach can be used to add the split columns to the existing DataFrame. ... Copied!import pandas as pd df = pd.DataFrame({ 'A': ['Alice', 'Bobby', 'Carl'], 'B': [[1, 2], [3, 4], [5, 6]], }) df[['B1', 'B2']] = pd.DataFrame( df['B'].tolist(), columns=['B1', 'B2'] ) # A B B1 B2 # 0 Alice [1, 2] 1 2 # 1 Bobby [3, 4] 3 4 # 2 Carl [5, 6] 5 6 print(df)
🌐
GitHub
gist.github.com › jlln › 338b4b0b55bd6984f883
Efficiently split Pandas Dataframe cells containing lists into multiple rows, duplicating the other column's values. · GitHub
def split_data_frame_list(df, target_column): """ Splits a column with lists into rows Keyword arguments: df -- dataframe target_column -- name of column that contains lists """ # create a new dataframe with each item in a seperate column, dropping rows with missing values col_df = pd.DataFrame(df[target_column].dropna().tolist(),index=df[target_column].dropna().index) # create a series with columns stacked as rows stacked = col_df.stack() # rename last column to 'idx' index = stacked.index.rename(names="idx", level=-1) new_df = pd.DataFrame(stacked, index=index, columns=[target_column]) return new_df
🌐
sqlpey
sqlpey.com › python › efficient-pandas-split-list-column
Efficient Pandas: How to Split List Column into Multiple Columns
October 29, 2025 - One highly performant approach involves extracting the column’s contents as a native Python list and passing it directly to the pd.DataFrame constructor, optionally specifying column names. This is often cited as a fast, idiomatic solution. If the target is to create a new DataFrame from the expanded data: import pandas as pd data_setup = {'teams': [['SF', 'NYG'], ['SF', 'NYG'], ['SF', 'NYG'], ['SF', 'NYG'], ['SF', 'NYG'], ['SF', 'NYG'], ['SF', 'NYG']]} df_initial = pd.DataFrame(data_setup) print("Initial DataFrame Structure:") print(df_initial) # Creating a new DataFrame (df3) with the split elements df_new_split = pd.DataFrame(df_initial['teams'].to_list(), columns=['team1', 'team2']) print("\nNew DataFrame with Split Columns:") print(df_new_split)
🌐
Tutorial Reference
tutorialreference.com › python › examples › faq › python-pandas-how-to-split-column-of-lists-into-multiple-columns
Python Pandas: How to Split Column of Lists into Multiple Columns | Tutorial Reference
Select the column containing lists: df['YourListColumn']. Convert this Series of lists into a Python list of lists: .tolist(). Pass this list of lists directly to the pd.DataFrame() constructor. Pandas will interpret each inner list as a row for the new DataFrame.
🌐
GeeksforGeeks
geeksforgeeks.org › convert-list-like-column-elements-to-separate-rows-in-pandas
Convert list-like column elements to separate rows in Pandas - GeeksforGeeks
November 12, 2020 - Convert each string of names to a list then use the pandas stack() function for pivoting the columns to index. ... # convert names series into string using str method # split the string on basis of comma delimiter # convert the series into list ...
🌐
GeeksforGeeks
geeksforgeeks.org › python-pandas-split-strings-into-two-list-columns-using-str-split
Pandas - Split strings into two List/Columns using str.split() - GeeksforGeeks
November 27, 2024 - The split function is applied to the Team column, splitting each string at the first occurrence of "t" (as n=1). Since expand=False, it returns a Series of lists instead of a DataFrame.
🌐
Arab Psychology
scales.arabpsychology.com › home › how to easily split a column of lists into multiple columns
How To Easily Split A Column Of Lists Into Multiple Columns
November 25, 2025 - The end result is a DataFrame in which the original points column of lists is now split into two new columns called game1 and game2. Note: If your column of lists has an uneven number of values in each list, pandas will simply fill in missing values with NaN values when splitting the lists ...