gpt4 book ai didi

python - 使用正则表达式在双空格后提取整数

转载 作者:太空宇宙 更新时间:2023-11-04 07:14:01 25 4
gpt4 key购买 nike

我有一个数据框,我想在其中提取双倍空间后的内容。对于 NAME 列中的所有行,在公司名称之后的整数之前有一个双空格。

                                    NAME  INVESTMENT  PERCENT
0 APPLE COMPANY A 57 638 232 stocks OIL LTD 0.12322
1 BANANA 1 COMPANY B 12 946 201 stocks GOLD LTD 0.02768
2 ORANGE COMPANY C 8 354 229 stocks GAS LTD 0.01786

df = pd.DataFrame({
'NAME': ['APPLE COMPANY A 57 638 232 stocks', 'BANANA 1 COMPANY B 12 946 201 stocks', 'ORANGE COMPANY C 8 354 229 stocks'],
'PERCENT': [0.12322, 0.02768 , 0.01786]
})

我之前有这个,但它在公司名称中也包含整数:

df['STOCKS']=df['NAME'].str.findall(r'\b\d+\b').apply(lambda x: ''.join(x))

相反,我尝试在双空格后提取

df['NAME'].str.split('(\s{2})')

给出输出:

0       [APPLE COMPANY A,   , 57 638 232 stocks]
1 [BANANA 1 COMPANY B, , 12 946 201 stocks]
2 [ORANGE COMPANY C, , 8 354 229 stocks]

但是,我希望将双空格后出现的整数连接/合并并放入新列中。

                 NAME  PERCENT  STOCKS
0 APPLE COMPANY A 0.12322 57638232
1 BANANA 1 COMPANY B 0.02768 12946201
2 ORANGE COMPANY C 0.01786 12946201

如何修改我的第二个函数来执行我想要的操作?

最佳答案

遵循您可能使用的原始逻辑

df['STOCKS'] = df['NAME'].str.extract(r'\s{2,}(\d+(?:\s\d+)*)', expand=False).str.replace(r'\s+', '')
df['NAME'] = df['NAME'].str.replace(r'\s{2,}\d+(?:\s\d+)*\s+stocks', '')

输出:

                 NAME  PERCENT    STOCKS
0 APPLE COMPANY A 0.12322 57638232
1 BANANA 1 COMPANY B 0.02768 12946201
2 ORANGE COMPANY C 0.01786 8354229

详情

  • \s{2,}(\d+(?:\s\d+)*) 用于在 2 个或更多空格和 .replace(r'\s+', '') 之后删除提取文本中的所有空格
  • .replace(r'\s{2,}\d+(?:\s\d+)*\s+stocks' 更新 NAME 中的文本列,它删除 2 个或多个空格,连续的空格分隔的数字 block ,然后是 1+ 个空格和 stocks。实际上,最后的 \s+stocks 可以替换为 .* 如果还有其他的话。

关于python - 使用正则表达式在双空格后提取整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55177821/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com