返回 Pandas Dataframe 中字符串中第一个数字/字母的索引/位置

我有一个包含多个列的数据框。其中之一是df['col1']由字母、特殊字符(. 或 _)和数字组成的字符串值。我想创建一个新列,返回索引 + 1 或第一个数字或 alpha 的位置。


我知道这不起作用,但类似于:


df['new_col'] = df['col1'].apply(lambda x: re.search(r'\d', str(x))).str.startswith()

以便


col1 = abc12 returns 4, 

33zxy returns 1, 

hi_world2 returns 9 

依此类推(如果是第一个数字的位置)。


我也尝试使用 find、next 和 filter,但它们没有用。


df['new_col'] = df['col1'].str.find(next(filter(str.isalpha, df['col1']))) + 1

任何帮助,将不胜感激!


UYOU
浏览 146回答 1
1回答

千万里不及你

您可以使用 re.searchimport redf['col1'].apply(lambda x: re.search('\d+', x).start()) + 1你得到0    41    12    9编辑:如果没有匹配项,re.search().start() 将抛出属性错误。这需要在条件下处理。由于 Pandas 将 NaN 解释为 float,因此结果位置将是 float 类型df = pd.DataFrame({'col1':['abc12', '33zxy', 'hi_world2','abc']})df['col1'].apply(lambda x: re.search('\d+', x).start() if re.search('\d+', x) else re.search('\d+', x)) + 10    4.01    1.02    9.03    NaN
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python