【问题标题】:non-capturing group does not work in separator in pandas read_csv非捕获组在 pandas read_csv 的分隔符中不起作用
【发布时间】:2016-02-01 18:21:12
【问题描述】:

我有 csv 文件,其中每一行都是这种格式:

(moon_phase)\t(year) (month) (day) (time)

例如:

new moon\t2011 Jan 04 09:03
first quarter\t2011 Jan 12 11:31

我想使用 pandas 的 read_csv() 来打开文件,并想出一个这样的表格:

|moon_phase    |date       |time |
|--------------|-----------|-----|
|new moon      |2011 Jan 04|09:03|
|first quarter |2011 Jan 12|11:31|

但是,当我使用带有值 "\t|(?:\d)( )(?:\d)" 的 read_csv 参数 sep 来拆分制表符空间中的行(以分隔月相和日期)和使用非捕获组的正则表达式(以分隔日期和时间),结果是:

|New Moon     |NaN|2011 Jan 0| |9:03|
|First Quarter|NaN|2011 Jan 1| |1:31|

我想在匹配中使用月份的dayhour,但分隔符应该只指它们之间的空格来分隔日期和时间。这如何在正则表达式中完成?

【问题讨论】:

  • 是的,我真的是指 | 的 OR,因为我想使用 "\t" 或每月的 dayhour 之间的空格来分割行时间。
  • 04 将使用\d+ 进行匹配。由于您只使用了一个\d,它只匹配0。时间也是如此。
  • 我还是得到了|new moon|NaN|2011 Jan| |:03
  • 不捕获并不意味着不消耗。如果您的组匹配\d,则它匹配的数字将不是返回数据的一部分(因为它将是列分隔符的一部分)。我建议您在\t 上拆分并在整个日期时间中读取单个列,然后在读取后将其单独拆分为日期/时间。
  • 是的,那将是下一步,我只是想知道是否可以使用 read_csv 和正则表达式解析该行并获得一些更清晰和单行的代码,谢谢@BrenBarn跨度>

标签: python regex pandas


【解决方案1】:

也许您可以在read_csv 中使用分隔符\t,然后使用strftime 创建新列DateTime

import pandas as pd
import numpy as np
import io

temp=u"""new moon\t2011 Jan 04 09:03
first quarter\t2011 Jan 12 11:31"""
#after testing replace io.StringIO(temp) to filename
df = pd.read_csv(io.StringIO(temp), 
                 sep="\t", 
                 parse_dates=[1], 
                 header=None, 
                 names=['Text', 'Datetime'] )
print df
            Text            Datetime
0       new moon 2011-01-04 09:03:00
1  first quarter 2011-01-12 11:31:00

df['Date'] = df['Datetime'].dt.strftime('%Y %b %d')
df['Time'] = df['Datetime'].dt.strftime('%H:%M')

#if you want drop column Datetime
df = df.drop('Datetime', axis=1)
print df
            Text         Date   Time
0       new moon  2011 Jan 04  09:03
1  first quarter  2011 Jan 12  11:31

【讨论】:

    猜你喜欢
    • 2017-07-06
    • 2017-10-25
    • 2017-06-25
    • 1970-01-01
    • 2017-05-05
    • 2015-09-20
    • 1970-01-01
    • 2018-01-25
    • 2021-05-28
    相关资源
    最近更新 更多