Seema Mudgil
Seema Mudgil

Reputation: 385

Converting column with list to columns in pandas

I have pandas df having one column containing list of different size. Though maximum size of list can be 10. My requirement is to convert these list & add it to column. Sample of my data looks like

    prod_1  prod_2                                                subs_number
    34007   [3330193, 349723, 3097333, 8145148]                       4
    34492   [7554951, 349723, 3097340, 350293, 3097333, 22...         8
    126063  [350293, 7901614, 7901597, 349723, 7901731, 30...         7
    126290  [3097340, 7901614, 7900213, 350293, 7901597]              5
    222338  [7554913, 7554951, 3214604, 34492, 8145148]               5

I want result something like below:

prod_1          subs1     subs2   subs3    subs4  subs5  subs6  subs7 
34007           3330193  349723  3097333  8145148
126063          350293   7901614  7901597  349723  7901731

Is it doable in pandas. Please help

Upvotes: 1

Views: 75

Answers (3)

Dmitriy K.
Dmitriy K.

Reputation: 136

Should work no matter how long would be your lists

Sample:

df = pd.DataFrame([[34007, [3330193, 349723, 3097333,8145148]], [126063, [350293,7901614,7901597,349723,7901731]], [10, [1,2,3,4,5,6,7,8,9,10]]], columns=['prod_1', 'prod_2'])

Sample output:

    prod_1  prod_2
0   34007   [3330193, 349723, 3097333, 8145148]
1   126063  [350293, 7901614, 7901597, 349723, 7901731]
2   10      [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

Create desire dataframe:

pd.DataFrame(df['prod_2'].values.tolist()).add_prefix('subs').join(df['prod_1'])

output please note: if column contain at least one NaN value, its type will be changed to float.

Upvotes: 2

pc_pyr
pc_pyr

Reputation: 626

Hope this works!

df = pd.DataFrame(df.prod_2.values.tolist(),index=df.index,
                  columns=['subs1','subs2','subs3', 'subs4','subs5', 'subs6','subs7'])

Upvotes: 2

A l w a y s S u n n y
A l w a y s S u n n y

Reputation: 38552

Not tested by it should work with pd.Series,

df2 = df2.prod_2.apply(pd.Series)
df2.columns = ['subs1', 'subs2','subs3', 'subs4','subs5', 'subs6','subs7']
print(df2)

Upvotes: 1

Related Questions