带有双引号的熊猫数据

时间:2018-07-16 09:49:40

标签: python pandas double-quotes

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

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

  1. A,“ B”,“ C”,“ D”
  2. comp_a,“树”,“房子”,“门”
  3. comp_b,“卡车”,“红色”,“蓝色”

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

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

我尝试使用

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

这为我提供了完整的标题,作为最后一列的单个变量

  1. A,“ B”,“ C”,“ D”
  2. comp_a“树”“房子”“门”
  3. comp_b“卡车”“红色”“蓝色”

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

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

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

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

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

有人知道我在读取.csv文件时如何删除所有引号吗?

3 个答案:

答案 0 :(得分:3)

只需使用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)

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

在文件data.csv之类的文件中考虑数据

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

也许较新的熊猫版本可以自己解决问题,例如在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('"', '')