As the title, I have one column (series) in pandas, and each row of it is a list like [0,1,2,3,4,5]
. Each list has 6 numbers. I want to change this column into 6 columns, for example, the [0,1,2,3,4,5]
will become 6 columns, with 0
is the first column, 1
is the second, 2
is the third and so on. How can I make it?
Not as fast as @jezrael's solution. But elegant :-)
apply
with pd.Series
df.a.apply(pd.Series)
0 1 2 3 4 5
0 0 1 2 3 4 5
1 0 1 2 3 4 5
or
df.a.apply(pd.Series, index=list('abcdef'))
a b c d e f
0 0 1 2 3 4 5
1 0 1 2 3 4 5
You can convert lists to numpy array
by values
and then use DataFrame
constructor:
df = pd.DataFrame({'a':[[0,1,2,3,4,5],[0,1,2,3,4,5]]})
print (df)
a
0 [0, 1, 2, 3, 4, 5]
1 [0, 1, 2, 3, 4, 5]
df1 = pd.DataFrame(df['a'].values.tolist())
print (df1)
0 1 2 3 4 5
0 0 1 2 3 4 5
1 0 1 2 3 4 5
cols = list('abcdef')
df1 = pd.DataFrame(df['a'].values.tolist(), columns=cols)
print (df1)
a b c d e f
0 0 1 2 3 4 5
1 0 1 2 3 4 5
If I understood your question correctly, you are looking for a transpose operation.
df = pd.DataFrame([1,2,3,4,5],columns='a')
# .T stands for transpose
print(df.T)
来源:https://stackoverflow.com/questions/42920363/how-to-expand-one-column-in-pandas-to-many-columns