Hen*_*ker 5
一种选择是Series.fillna
+Series.str
对前 3 个值进行切片:
df['id'] = df['id'].fillna(df['stat'].str[:3])
id value stat
0 aaa 10.0 aaa123
1 aaa 20.0 NaN
2 aaa 500.0 aaa123
3 bbb 20.0 NaN
4 bbb 10.0 bbb123
5 aaa 5.0 aaa123
6 aaa NaN aaa123
7 c NaN c123
对于这种情况可能有点矫枉过正,但Series.str.extract
也可以使用:
df['id'] = df['id'].fillna(df['stat'].str.extract(r'(^.{3})')[0])
mask
如果这些是空字符串而不是NaN
:
df['id'] = df['id'].mask(df['id'].eq('')).fillna(df['stat'].str[:3])
更多推荐
字符串,字符
发布评论