【发布时间】:2017-08-12 17:17:39
【问题描述】:
作为标题,我在 pandas 中有一列(系列),每一行都是一个类似[0,1,2,3,4,5] 的列表。每个列表有 6 个数字。我想把这列改成6列,比如[0,1,2,3,4,5]会变成6列,0是第一列,1是第二列,2是第三列,以此类推。我怎样才能做到?
【问题讨论】:
标签: python pandas scikit-learn bigdata
作为标题,我在 pandas 中有一列(系列),每一行都是一个类似[0,1,2,3,4,5] 的列表。每个列表有 6 个数字。我想把这列改成6列,比如[0,1,2,3,4,5]会变成6列,0是第一列,1是第二列,2是第三列,以此类推。我怎样才能做到?
【问题讨论】:
标签: python pandas scikit-learn bigdata
没有@jezrael 的解决方案那么快。但优雅:-)
apply 与 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
或
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
【讨论】:
如果我正确理解了您的问题,您正在寻找转置操作。
df = pd.DataFrame([1,2,3,4,5],columns='a')
# .T stands for transpose
print(df.T)
【讨论】:
您可以通过values 将列表转换为numpy array,然后使用DataFrame 构造函数:
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
【讨论】: