【问题标题】:Split digits from strings and take the maximum从字符串中拆分数字并取最大值
【发布时间】:2021-06-23 15:49:20
【问题描述】:

我只需要提取字符串中字母前面的那些数字。例如 1A、22C、3C4、10A,我想得到输出为 1、22、3、10,然后取最大值,即 22。

【问题讨论】:

  • df['col'].str.extract('(\d+)').astype(int).max().
  • 您输入的格式是什么?是DataFrame还是String?
  • 它是数据框中的一列
  • @QuangHoang 这是否确保只选择字母之前的数字而不是之后的数字?

标签: python pandas string split


【解决方案1】:

您可以使用正则表达式查找字母前面的数字,例如:

from re import findall, I
s = "1A 22C 3C4 10A"
matches = findall(r"(\d+)[a-z]",s,I)
maximum = max(map(int,matches))

findall 将在字符串s 中找到符合正则表达式r"(\d+)[a-z]" 的所有匹配项。 \d+ 匹配一个或多个数字字符 (0-9),[a-z] 匹配一个字母(注意 I 标志告诉正则表达式忽略大小写,所以 [A-Z] 字母也匹配)。

map(int,matches) 将所有匹配项转换为整数,max 只是找到其中的最大值。

【讨论】:

  • 简单而出色的解决方案!
猜你喜欢
  • 1970-01-01
  • 2020-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多