woshitom
woshitom

Reputation: 5141

Pandas DataFrame: create a column from a list inside a column

I'm having the pandas DataFrame 'test_df':

email                      my_list
[email protected]          [1,9,3,5]
[email protected]          [6,3,3,15]
[email protected]          [7,7,2,5]
[email protected]          [5,5,5,5]

How can I have this following DataFrame (take the first 2 elem of 'my_list'):

email                      col1             col2             
[email protected]          1                9        
[email protected]          6                3
[email protected]          7                7
[email protected]          5                5           

I tried:

test_df['col1'] = test_df['my_list'][0]
test_df['col2'] = test_df['my_list'][1]

But it's not working

Upvotes: 1

Views: 2063

Answers (1)

Marius
Marius

Reputation: 60230

I asked a related question here, although I wanted to go a bit beyond expanding the lists into columns so the answers are more complicated than what you need. In your case, you can just do:

# Using my own example data since it's a bit tough to copy-paste
# a printed table and have the lists show up as lists
df = pd.DataFrame({'email': ['[email protected]', '[email protected]'], 
                   'lists': [[1, 9, 3, 5], [6, 3, 3, 15]]})
df
Out[14]: 
           email          lists
0  [email protected]   [1, 9, 3, 5]
1  [email protected]  [6, 3, 3, 15]

objs = [df, pd.DataFrame(df['lists'].tolist()).iloc[:, :2]]
pd.concat(objs, axis=1).drop('lists', axis=1)
Out[13]: 
           email  0  1
0  [email protected]  1  9
1  [email protected]  6  3

Upvotes: 3

Related Questions