Skip to content Skip to sidebar Skip to footer

Split List Into Columns In Pandas

I have a dataframe like this df = (pd.DataFrame({'ID': ['ID1', 'ID2', 'ID3'], 'Values': [['AB', 'BC'], np.NaN, ['AB', 'CD']]})) df ID Values 0 ID1 [AB

Solution 1:

Pandas functions working with missing values nice, so use Series.str.join with Series.str.get_dummies, DataFrame.pop is for extract column and last join to original data:

df = df.join(df.pop('Values').str.join('|').str.get_dummies())
print (df)
    ID  AB  BC  CD
0  ID1   1   1   0
1  ID2   0   0   0
2  ID3   1   0   1

EDIT: If values are not lists, only string representation of lists use ast.literal_eval for converting to lists:

import ast

df = (df.join(df.pop('Values')
        .apply(ast.literal_eval)
        .str.join('|')
        .str.get_dummies()))

Post a Comment for "Split List Into Columns In Pandas"