Python - 将字符串拆分为多个列

Cas*_*r84 2 python string split pandas

我有一个数据框,其中包含一个带有字符串的列。看起来像 :

[a]
aaa aa a aaaa
bbb bbb b
cc cccc ccc cc ccc
Run Code Online (Sandbox Code Playgroud)

我想要的是添加 6 列的 [a] 拆分值,如下所示:

[a]                     [a0]    [a1]    [a2]    [a3]    [a4]    [a5]
aaa aa a aaaa           aaa     aa      a       aaaa    NaN     NaN
bbb bbb b               bbb     bbb     b       NaN     NaN     NaN
cc cccc ccc cc ccc      cc      cccc    ccc     cc      ccc     NaN
Run Code Online (Sandbox Code Playgroud)

我使用这个代码:

for i in range(6):
     df["a{}".format(i)] = df[a].apply(lambda x:x.split(' ')[i])
Run Code Online (Sandbox Code Playgroud)

但我有一个“超出范围”的错误,这可以解释,因为所有值都没有相同的数字元素。

我如何避免这个错误,并用 None 替换所有错误值?

提前致谢。BR,

编辑:我们永远不知道要拆分的字符串长度。它包含 2 次出现,有时 4 次,等等。

Nic*_*eli 5

您可以使用str.split和提供,expand=True以便将其放大为每个单独拆分的数据框。

通过提供一个附加范围来重新索引这些,以便我们可以创建一个额外的列NaNs。稍后提供可选的前缀字符。

然后,按DF's列连接原始和提取的。

str_df = df['a'].str.split(expand=True).reindex(columns=np.arange(6)).add_prefix('a')
pd.concat([df, str_df], axis=1).replace({None:np.NaN})
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明