Pandas 使用单引号读取 CSV,因为 quotechar 会抛出语法错误:输入不完整

问题描述 投票:0回答:1

我目前正在尝试读取具有以下结构的 CSV:

 samplecsv = """ 'column A', 'column b', 'column c',
 'valueA', 'valueb', 'valuec,d',
 'valueA', 'valueb', 'valuecd',
 'valueA', 'valueb', 'valuecd',
 'valueA', 'valueb', 'valuec,d'
 """

请注意,我没有将其作为字符串包含,但我将相同的数据存储在 .txt 文件中。

我希望 python 忽略 'valuec,d' 中的逗号进行分隔,以便稍后将其放在一列中。我发现你可以给出一个被忽略的 quotechar 作为参数,但我无法让它用单引号运行。我试过:

import pandas as pd

DF= pd.read_csv(r'Myfilepath, sep = ',', quotechar =''') 

以及:

DF= pd.read_csv(r'Myfilepath, sep = ',', quotechar ='''') 

我也尝试过:

DF= pd.read_csv(r'Myfilepath, sep = ',', quotechar ="'")

所有 3 个版本都给了我“SyntaxError: incomplete input”。我做错了什么?

标记为重复的问题仅解释了单引号和双引号之间的区别,但没有解释如何在 pd.read_csv 中排除它们。因此我仍在寻找答案。

python pandas dataframe csv
1个回答
1
投票

我没有收到此数据的任何错误。不过,这些字段包含额外的空格,这需要

skipinitialspace
参数。代码如下:

import pandas as pd
samplecsv = """ 'column A', 'column b', 'column c',
'valueA', 'valueb', 'valuec,d',
 'valueA', 'valueb', 'valuecd',
'valueA', 'valueb', 'valuecd',
'valueA', 'valueb', 'valuec,d'
"""
from io import StringIO
df=pd.read_csv(StringIO(csv), sep = ',', quotechar ="'",skipinitialspace=True)
df

产品

  column A column b  column c  Unnamed: 3
0   valueA   valueb  valuec,d         NaN
1   valueA   valueb   valuecd         NaN
2   valueA   valueb   valuecd         NaN
3   valueA   valueb  valuec,d         NaN

最后一个空列适用于大多数行中的尾随

,
。可以使用
dropna
将其删除:

>>> df.dropna(axis=1,how='all')
  column A column b  column c
0   valueA   valueb  valuec,d
1   valueA   valueb   valuecd
2   valueA   valueb   valuecd
3   valueA   valueb  valuec,d
© www.soinside.com 2019 - 2024. All rights reserved.