Pandas-将字符串拆分为多个列,并将数量可变的分隔值拆分为3列



我有一个字符串系列,它可以包含形式为a[ - b[ - c]]的方括号的字符串,表示可选存在。例如,它可以是aa - ba - b - c的形式。我想提取每个元素,并将其转换为具有3列的数据帧。

现在,如果该系列具有所有3种格式,则会给出正确的结果

s = pd.Series(['a', 'a - b', 'a - b - c'])
s.str.split(' - ', expand=True).fillna('')
# out
0  1  2
0  a
1  a  b
2  a  b  c

然而,如果它只是s = pd.Series(['a', 'a - b']),那么我只得到

0  1
0  a
1  a  b

这种情况下的预期输出将是

0  1 2
0  a
1  a  b   

无论系列中存在什么类型的模式,我都希望输出中有3列。

使用DataFrame.reindex:

s.str.split(' - ', expand=True).reindex(range(3), axis=1).astype(object).mask(lambda x: x.isna(), None)

或者:

s.str.split(' - ', expand=True).reindex(range(3), axis=1).fillna('')

相关内容

  • 没有找到相关文章

最新更新