【问题标题】:Python - Extract Numbers Separated by Hyphen from StringPython - 从字符串中提取用连字符分隔的数字
【发布时间】:2021-07-31 05:06:05
【问题描述】:

我正在尝试在数据框列(名称深度)中提取由连字符分隔的 2 个数字(深度从和深度到)。虽然第一个数字被正确提取,但第二个数字却不是。我尝试了很多方法。

ConvCore = pd.read_csv(r'ConvCore.csv', encoding='cp1252')
ConvCore.columns = ['Depth', 'k', 'phi', 'Well']
ConvCore['DepthFrom'] = ConvCore['Depth'].str.extract('([0-9.]+)')

#ConvCore['DepthTo'] = ConvCore['Depth'].str.extract('-([0-9.]+)')
#for i in ConvCore:
    #ConvCore['DepthTo'] = re.search(r'(\d+)-', ConvCore['Depth'][i-1])
    #ConvCore['DepthFrom'] = ConvCore['Depth'].str.extract('(\d+)').astype(float)
    #DepthTo = ConvCore['Depth'].str.extract('(?P<digit1>[0123456789])').astype(float)
    #ConvCore['DepthTo'] = ConvCore['Depth'].str.split("-")
    #ConvCore['DepthFrom'] = re.match(r'(\d+)', ConvCore['Depth']).group()

【问题讨论】:

  • 虽然正则表达式可以很好地工作,但对于您的情况,它看起来像 str.split("-") 方法就足够了吗?然后,您可以从该结果中获取“from”和“to”字符串并将它们转换回浮点数
  • 试试,ConvCore['Depth'].str.split('-', expand =True) ?

标签: python string expression extract


【解决方案1】:

试试这个方法:

ConvCore['DepthFrom'] = ConvCore['Depth'].str.split("-", expand=True)[0]
ConvCore['DepthTo'] = ConvCore['To'].str.split("-", expand=True)[1]

【讨论】:

  • 您可以在拆分中设置expand = True 并在单行中完成
【解决方案2】:

您可以拆分值,然后将新值分配给数据框。我使用示例数据集来模拟您的场景,

In [4]: df = pd.DataFrame({'num_legs': ['20-30', '40-60', '80-90', '0-10'],
    ...:
    ...:                    'num_wings': [2, 0, 0, 0],
    ...:
    ...:                    'num_specimen_seen': [10, 2, 1, 8]},
    ...:
    ...:                   index=['falcon', 'dog', 'spider', 'fish'])

In [5]: ndf = pd.DataFrame(df.num_legs.str.split('-').tolist(), columns = ['x1', 'x2'])

In [6]: df[ ndf.columns ] = ndf.values

In [7]: df
Out[7]:
       num_legs  num_wings  num_specimen_seen  x1  x2
falcon    20-30          2                 10  20  30
dog       40-60          0                  2  40  60
spider    80-90          0                  1  80  90
fish       0-10          0                  8   0  10

所以在你的情况下,代码应该是这样的,

ndf = pd.DataFrame(ConvCore.Depth.str.split('-').tolist(), columns = ['DepthFrom', 'DepthTo'])

ConvCore[ ndf.columns ] = ndf.values

【讨论】:

    猜你喜欢
    • 2018-02-05
    • 1970-01-01
    • 2021-12-10
    • 2013-06-24
    • 2021-11-22
    • 1970-01-01
    • 2020-09-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多