【问题标题】:regex based dataframe manipuation基于正则表达式的数据框操作
【发布时间】:2020-11-13 06:04:23
【问题描述】:

我有一个数据框“df”,看起来像所附图像:

我只需要提取那些以日期开头的行,因为它们是唯一有金额的行。 我试过了:

statementtable=[]
for line in df:
if re.search('^(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](19|20)\d\d',line):
    statementtable.append(line)

但它正在引发错误。

【问题讨论】:

  • 我认为你必须把开头的 0 设为可选 0?[1-9] regex101.com/r/EGem7S/1
  • 您是否可以不过滤掉日期列中没有 NaN 的行,例如:df[df["date"].notnull()] 或在您的情况下为第一列索引。

标签: python-3.x regex pandas list dataframe


【解决方案1】:

您不仅需要在“第四只鸟”建议的日期值的第一个零处添加?,还需要在月份值处添加第二个?,这样当月份值不为零时数字(例如 11-8-2019)你仍然可以捕获它:

if re.search('^(0?[1-9]|[12][0-9]|3[01])[- /.](0?[1-9]|1[012])[- /.](19|20)\d\d',line):

【讨论】:

  • 抱歉,我收到 TypeError: expected string or bytes-like object in the re.search 行。
猜你喜欢
  • 2014-04-12
  • 2011-05-14
  • 1970-01-01
  • 2022-01-23
  • 2019-09-24
  • 1970-01-01
  • 1970-01-01
  • 2013-10-07
  • 2021-08-14
相关资源
最近更新 更多