使用str.split(panda)拆分一列时强制列数

Sd *_*unk 2 python python-3.x pandas

我不知道str.split是否可以执行该过程.但是,例如,我在数据帧df中有以下列:

   Column
0 a-b-c-d-e-f-g-h-i-j
1 a-a-b-b-c-c
2 a-a-b-b
Run Code Online (Sandbox Code Playgroud)

我知道,如果我这样做

df['Column'].str.split('-', expand=True)
Run Code Online (Sandbox Code Playgroud)

然后我将得到如下结果:

  0  1  2  3  4      5      6      7      8      9
0 a  b  c  d  e      f      g      h      i      j
1 a  a  b  b  c      c    None   None   None   None
2 a  a  b  b  None  None  None   None   None   None
Run Code Online (Sandbox Code Playgroud)

根据分割完成时元素的最大数量创建多个列.

我想知道是否可以总是有10列,无论元素的数量是多少,只要它在0到10之间,并在这里用'None'填充剩余的列.

所以会改变以下列:

       Column
0 a-b-c-d-e-f-g-h
1 a-a-b-b-c-c
2 a-a-b-b
Run Code Online (Sandbox Code Playgroud)

成:

  0  1  2  3  4      5      6      7      8      9
0 a  b  c  d  e      f      g      h    None   None
1 a  a  b  b  c      c    None   None   None   None
2 a  a  b  b  None  None  None   None   None   None
Run Code Online (Sandbox Code Playgroud)

piR*_*red 5

reindex之后
通过user3483203改进了实现

df.Column.str.split('-', expand=True).reindex(columns=range(10))

   0  1  2  3     4     5     6     7     8     9
0  a  b  c  d     e     f     g     h     i     j
1  a  a  b  b     c     c  None  None  None  None
2  a  a  b  b  None  None  None  None  None  None
Run Code Online (Sandbox Code Playgroud)

一种理解方法

pd.DataFrame([
    (lambda l: l + [None] * (10 - len(l)))(x.split('-'))
    for x in df.Column
], df.index)

   0  1  2  3     4     5     6     7     8     9
0  a  b  c  d     e     f     g     h  None  None
1  a  a  b  b     c     c  None  None  None  None
2  a  a  b  b  None  None  None  None  None  None
Run Code Online (Sandbox Code Playgroud)