我有一个字符串系列,它可以包含形式为a[ - b[ - c]]
的方括号的字符串,表示可选存在。例如,它可以是a
或a - b
或a - 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('')