I have the following dataframe:
JavaScript
x
7
1
Col
2
0 A,B,C
3
1 B,A,D
4
2 C
5
3 A,D,E,F
6
4 B,C,F
7
JavaScript
1
2
1
df = pd.DataFrame({'Col': ['A,B,C', 'B,A,D', 'C', 'A,D,E,F', 'B,C,F']})
2
which needs to be turned into:
JavaScript
1
7
1
A B C D E F
2
0 A B C
3
1 A B D
4
2 C
5
3 A D E F
6
4 B C F
7
Advertisement
Answer
Using pandas.concat
:
JavaScript
1
3
1
pd.concat([pd.Series((idx:=x.split(',')), index=idx)
2
for x in df['Col']], axis=1).T
3
For python < 3.8:
JavaScript
1
4
1
pd.concat([pd.Series(val, index=val)
2
for x in df['Col']
3
for val in [x.split(',')]], axis=1).T
4
Output:
JavaScript
1
7
1
A B C D E F
2
0 A B C NaN NaN NaN
3
1 A B NaN D NaN NaN
4
2 NaN NaN C NaN NaN NaN
5
3 A NaN NaN D E F
6
4 NaN B C NaN NaN F
7
NB. add fillna('')
to have empty strings for missing values
JavaScript
1
7
1
A B C D E F
2
0 A B C
3
1 A B D
4
2 C
5
3 A D E F
6
4 B C F
7