python - 忽略 pandas csv 中的引号

标签 python pandas

我有一个像这样的 CSV:

A  B  C  D                     E   F  G
-- -- -- --------------------- --- -- --
G1 M1 C1 "2015-01-01 00:00:00" SR1 E1 N1
G1 M1 C1 "2015-01-01 00:00:00" SR1 E1 N2
G1 M1 C1 "2015-01-01 00:00:00" SR1 E1 N3
G2 M2 C1 "2015-01-01 00:00:00" SR1 E1 N1
G2 M2 C1 "1/1/2015 00:00:00" SR1 E1 N2
G2 M2 C1 "1/1/2015 00:00:00" SR1 E1 N3

我需要将其读入 pandas df 并忽略 D 列中的引号,以便我可以将其解析为日期时间列。我尝试执行以下操作:

df = pd.read_csv(
        infile,
        sep=r"\s*(?![0-9][0-9]:)",
        skiprows=[1],
        header=0,
        quoting=csv.QUOTE_NONE
    )

但是生成的 df 中仍然有引号:

>>> df
    A   B   C                      D    E   F   G
0  G1  M1  C1  "2015-01-01 00:00:00"  SR1  E1  N1
1  G1  M1  C1  "2015-01-01 00:00:00"  SR1  E1  N2
2  G1  M1  C1  "2015-01-01 00:00:00"  SR1  E1  N3
3  G2  M2  C1  "2015-01-01 00:00:00"  SR1  E1  N1
4  G2  M2  C1    "1/1/2015 00:00:00"  SR1  E1  N2
5  G2  M2  C1    "1/1/2015 00:00:00"  SR1  E1  N3

如果我尝试直接将 D 列解析为日期时间列,pandas 会中断:

>>> pd.to_datetime(df.D)
...
ValueError: Unknown string format

如何将 D 列格式化为 pandas 可以将其解析为日期列?

Pandas 版本:0.19.2

最佳答案

演示:

In [44]: df = pd.read_csv(r'D:\download\1.csv', delim_whitespace=True, skiprows=[1], 
                          parse_dates=['D'])

In [45]: df
Out[45]:
    A   B   C          D    E   F   G
0  G1  M1  C1 2015-01-01  SR1  E1  N1
1  G1  M1  C1 2015-01-01  SR1  E1  N2
2  G1  M1  C1 2015-01-01  SR1  E1  N3
3  G2  M2  C1 2015-01-01  SR1  E1  N1
4  G2  M2  C1 2015-01-01  SR1  E1  N2
5  G2  M2  C1 2015-01-01  SR1  E1  N3

In [46]: df.dtypes
Out[46]:
A            object
B            object
C            object
D    datetime64[ns]
E            object
F            object
G            object
dtype: object

其中D:\download\1.csv:

A  B  C  D                     E   F  G
-- -- -- --------------------- --- -- --
G1 M1 C1 "2015-01-01 00:00:00" SR1 E1 N1
G1 M1 C1 "2015-01-01 00:00:00" SR1 E1 N2
G1 M1 C1 "2015-01-01 00:00:00" SR1 E1 N3
G2 M2 C1 "2015-01-01 00:00:00" SR1 E1 N1
G2 M2 C1 "1/1/2015 00:00:00" SR1 E1 N2
G2 M2 C1 "1/1/2015 00:00:00" SR1 E1 N3

关于python - 忽略 pandas csv 中的引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44142240/

相关文章:

python - CodingBat 帮助。 list.remove(x) : x not in list error? 不明白为什么这不起作用

python - Scrapy spider 不存储状态(持久化状态)

python - Pandas 查找最接近配置文件的行

python-3.x - 根据 Count > 1 在 pandas 中创建 df

python - Pandas Python : Concatenate dataframes having same columns

pandas:阻止 pandas 自动将 0.40 显示为 0.4

python - 为什么 python phonenumbers 库在这种情况下不起作用?

Win 7 家庭高级版上的 Python 2.7.2 和 Google App Engine SDK 1.6.1 无法正常工作

python - Django REST 框架——如何将外键解析为实际值,而不是索引?

python - 新手 - 将 49 张 Excel 工作表读入数据框