为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

UYOU 2023-06-20 16:27:45
我有一个包含多个列的数据框。其中之一是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任何帮助,将不胜感激!
查看完整描述

1 回答

?
千万里不及你

TA贡献1784条经验 获得超9个赞

您可以使用 re.search


import re

df['col1'].apply(lambda x: re.search('\d+', x).start()) + 1

你得到


0    4

1    1

2    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)) + 1


0    4.0

1    1.0

2    9.0

3    NaN


查看完整回答
反对 回复 2023-06-20
  • 1 回答
  • 0 关注
  • 97 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信