【问题标题】:how to extract signs of numbers correctly from a pandas string column如何从熊猫字符串列中正确提取数字符号
【发布时间】:2023-03-08 16:36:01
【问题描述】:

我有一个带有 field_names 和 valid_values(范围)的 data_dict pandas 数据框。我想将有效值转换为 lower_limit 和 upper_limit。

field_names valid_values lower_limit upper_limit
Var1 0-9990 0 9990
Var2 -9990-9999990 -9990 9999990
Var3 -999999990-999999990 -999999990 999999990
Var4 0-999999990 0 999999990

下面的代码正确提取了上限,但漏掉了下限的负号

data_dict.valid_values.str.extractall(r'(\d+)').unstack()

下面的代码正确提取了上限,但漏掉了下限的负号

下面的代码对下限正常工作,但在上限中添加了“-”分隔符

data_dict.valid_values.str.extractall(r'([+-]\d+)').unstack()

请建议如何正确提取下限和上限。谢谢。

【问题讨论】:

  • 你可以为 (-2,-1) 提供类似 '-2--1' 的内容吗?

标签: python pandas


【解决方案1】:

如果upper_limit 始终为正值,您可以将值按最后一个- 拆分为Series.str.rsplit

cols = ['lower_limit','upper_limit']
data_dict[cols] = data_dict.valid_values.str.rsplit('-', expand=True, n=1)
print (data_dict)
  field_names          valid_values lower_limit upper_limit
0        Var1                0-9990           0        9990
1        Var2         -9990-9999990       -9990     9999990
2        Var3  -999999990-999999990  -999999990   999999990
3        Var4           0-999999990           0   999999990

【讨论】:

  • 我会检查一下。谢谢。
【解决方案2】:

您可以使用-? 在正则表达式中添加可选的-

这使您在第二部分也可以有一个负数。

df['valid_values'].str.extract(r'(?P<lower_limit>-?\d+)-(?P<upper_limit>-?\d+)')

输出:

  lower_limit upper_limit
0           0        9990
1       -9990     9999990
2  -999999990   999999990
3           0   999999990

短版:

df[['lower_limit', 'upper_limit']] = df['valid_values'].str.extract(r'(-?\d+)-(-?\d+)')

输出:

  field_names           valid_values lower_limit upper_limit
0       Var1                 0-9990            0        9990
1       Var2          -9990-9999990        -9990     9999990
2       Var3   -999999990-999999990   -999999990   999999990
3       Var4            0-999999990            0   999999990

【讨论】:

  • 谢谢。我会检查一下。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-07
  • 2020-07-19
  • 2020-09-06
  • 1970-01-01
  • 2021-01-31
  • 2021-07-16
相关资源
最近更新 更多