这个问题是比较接近现有的有关提取字符串的答案,但我的数据有技术的曲折它。东风列数据是这样的:
Col1:
2909_10_2018
2909_14_2019
32_13_2019
4200_14_2018
4124__2019
目的是提取两者之间的串“_”,但有时候没有字符串。
我试图张贴在类似主题无济于事多种解决方案:
try:
df['Col2'] = re.search('.*abc_[^_]*', df.Col1)
except:
TypeError:
df['Col2'] = ''
生产“”
try:
df['Col2'] = re.search('_(.*)_', df.Col1)
except:
TypeError:
df['Col2'] = ''
生产“”
df['Col2'] = df.Col1.str.split("_", n = 1, expand = True)
结果ValueError异常:数项错误过去了2,安置意味着1。
什么是一个很好的Python的方式来提取“_”,同时处理遗漏之间的文本?
考虑到格式不改变,你可以为你必须为每个行做同样的操作使用lambda
功能。下面的代码将创建一个空字符串的新列以及。
码:
df['Col2'] = df.Col1.apply(lambda x: x.split('_')[1])
输出:
Col1 Col2
0 2909_10_2018 10
1 2909_14_2019 14
2 32_13_2019 13
3 4200_14_2018 14
4 4124__2019