pandas 带双引号的数据
pandas data with double quote
我正在尝试读取 .csv 格式的大型数据集,该数据集使用 pandas 库自动更新。
问题是在我的数据中,第一行是没有双引号的字符串,其他列都是有双引号的字符串。我无法手动调整 .csv 文件。
一个简化的数据集看起来像这样
- A,"B","C","D"
- comp_a,"tree","house","door"
- comp_b,"truck","red","blue"
我需要将数据存储为单独的列,不带引号,如下所示:
- A B C D
- comp_a树屋门
- comp_b卡车红蓝
我试过使用
import pandas as pd
df_csv = pd.read(path_to_file,delimiter=',')
这给了我完整的 header 作为最后一列的单个变量
- A,"B","C","D"
- comp_a "tree" "house" "door"
- comp_b "truck" "red" "blue"
最接近我需要的结果是使用以下
df_csv = pd.read(path_to_file,delimiter=',',quoting=3)
正确识别每一列,但添加了一堆额外的双引号。
- "A ""B"" ""C"" ""D"""
- "comp_a ""tree"" ""house"" ""door"""
- "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)
我正在尝试读取 .csv 格式的大型数据集,该数据集使用 pandas 库自动更新。 问题是在我的数据中,第一行是没有双引号的字符串,其他列都是有双引号的字符串。我无法手动调整 .csv 文件。
一个简化的数据集看起来像这样
- A,"B","C","D"
- comp_a,"tree","house","door"
- comp_b,"truck","red","blue"
我需要将数据存储为单独的列,不带引号,如下所示:
- A B C D
- comp_a树屋门
- comp_b卡车红蓝
我试过使用
import pandas as pd
df_csv = pd.read(path_to_file,delimiter=',')
这给了我完整的 header 作为最后一列的单个变量
- A,"B","C","D"
- comp_a "tree" "house" "door"
- comp_b "truck" "red" "blue"
最接近我需要的结果是使用以下
df_csv = pd.read(path_to_file,delimiter=',',quoting=3)
正确识别每一列,但添加了一堆额外的双引号。
- "A ""B"" ""C"" ""D"""
- "comp_a ""tree"" ""house"" ""door"""
- "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)