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 次,等等。
您可以使用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)