【问题标题】:How can I copy a part of a string from a column into a new column in pandas如何将字符串的一部分从列复制到熊猫的新列中
【发布时间】:2020-12-04 17:44:36
【问题描述】:

我有一列的日期范围嵌套在一个字符串中,我需要检索开始日期和结束日期并将它们放在一个新列中。以下是数据的示例。

A               
foo_bar_2/27-6/30    
bar_foo_3/07-4/01    
foo_bar_6/19-7/30 

我需要提取这些日期,但我无法拆分索引,因为某些日期的长度不同,即:12/27 与 1/7。但是,它们的格式相同(_startdate-enddate)。如何获取开始和结束日期并将它们放在自己的列中?下面的例子:

A                   start_date  end_date
foo_bar_2/27-6/30     2/27       6/30
bar_foo_3/7-4/1       3/7        4/1    
foo_bar_6/19-7/30     6/19       7/30

任何建议都有帮助

【问题讨论】:

标签: python python-3.x pandas string


【解决方案1】:

你可以使用extract:

df[['start_date', 'end_date']] = df['A'].str.extract("(?P<start_date>\d{1,2}/\d{1,2})-(?P<end_date>\d{1,2}/\d{1,2})", expand=True)
print(df)

输出

                   A start_date end_date
0  foo_bar_2/27-6/30       2/27     6/30
1  bar_foo_3/07-4/01       3/07     4/01
2  foo_bar_6/19-7/30       6/19     7/30

作为替代方案:

df[['start_date', 'end_date']] = df['A'].str.extract("(\d{1,2}/\d{1,2})-(\d{1,2}/\d{1,2})", expand=True)

最后如果模式和样本输入中的一样,用_-分割,取最后两个元素:

df[['start_date', 'end_date']] = df['A'].str.split('[_-]', expand=True).iloc[:, -2:]

【讨论】:

  • 这很棒,就像一个魅力。看起来我需要对提取物做更多的研究,这样我才能继续使用它。谢谢!
猜你喜欢
  • 1970-01-01
  • 2017-02-07
  • 2022-09-23
  • 1970-01-01
  • 2018-04-18
  • 2018-02-01
  • 1970-01-01
  • 2021-03-15
  • 2018-02-04
相关资源
最近更新 更多