pandas 带双引号的数据

pandas data with double quote

我正在尝试读取 .csv 格式的大型数据集,该数据集使用 pandas 库自动更新。 问题是在我的数据中,第一行是没有双引号的字符串,其他列都是有双引号的字符串。我无法手动调整 .csv 文件。

一个简化的数据集看起来像这样

  1. A,"B","C","D"
  2. comp_a,"tree","house","door"
  3. comp_b,"truck","red","blue"

我需要将数据存储为单独的列,不带引号,如下所示:

  1. A B C D
  2. comp_a树屋门
  3. comp_b卡车红蓝

我试过使用

import pandas as pd
df_csv = pd.read(path_to_file,delimiter=',')

这给了我完整的 header 作为最后一列的单个变量

  1. A,"B","C","D"
  2. comp_a "tree" "house" "door"
  3. comp_b "truck" "red" "blue"

最接近我需要的结果是使用以下

df_csv = pd.read(path_to_file,delimiter=',',quoting=3)

正确识别每一列,但添加了一堆额外的双引号。

  1. "A ""B"" ""C"" ""D"""
  2. "comp_a ""tree"" ""house"" ""door"""
  3. "comp_b ""truck"" ""red"" ""blue"""

将引号设置为 0 到 2 之间的值只会将整行作为单个列读取。

有谁知道如何在阅读 .csv 文件时删除所有引号?

您可以在 read_csv 之后替换 " 并使用 df_csv.to_csv('fname')

再次保存该文件
df_csv.apply(lambda x:x.str.replace('"', ""))

考虑文件中的数据 data.csv 喜欢

$> more data.csv 
A,"B","C","D"
comp_a,"tree","house","door"
comp_b,"truck","red","blue"

也许较新的 pandas 版本可以自行解决您的问题,例如在 pd.__version__ = '0.23.1'

In [1]: import pandas as pd

In [2]: pd.read_csv('data.csv')
Out[2]: 
        A      B      C     D
0  comp_a   tree  house  door
1  comp_b  truck    red  blue

否则在读数上应用替换

pd.read_csv('data.csv').replace('"', '')

只需使用 pd.read_csv() 加载数据,然后使用 .replace('"','', regex=True)

在一行中它将是:

df = pd.read_csv(filename, sep=',').replace('"','', regex=True)

设置列名称:

df.columns = df.iloc[0]

并删除第 0 行:

df = df.drop(index=0).reset_index(drop=True)