我无法读取一列中具有不同格式的CSV

4szc88ey  于 5个月前  发布在  其他
关注(0)|答案(2)|浏览(67)

我有一个.csv包含20+列。问题是我有一个列包含0,1,“(10,12),“(20,11)",9当试图在一个嵌套框架中使用read_csv读取它时,“”值不会被解析。我可以使用什么来解析单元格中的(10,12)值?
我尝试使用所有read_csv选项,如quotechar,quoting和doublequote。没有帮助。我尝试替换“,但将值分为2列。

xv8emn3q

xv8emn3q1#

你的例子的问题是你的报价是不平衡的:

0, 1, "(10,12), "(20,11)", 9

字符串
应该是:

0, 1, "(10,12)", "(20,11)", 9


你可以通过检查),并添加缺少的引号来修复这个问题(这里的例子是使用正则表达式)。此外,命令和引号之间的空格默认情况下不会被解析器接受。为了避免这种情况,你必须将skipinitialspace=True传递给read_csv

import io
import re
import pandas as pd

with open('my_csv.csv') as f:
    df = pd.read_csv(io.StringIO(re.sub(r'(\))\s*(,)', r'\1"\2', f.read())),
                     skipinitialspace=True,
                     header=None, # optional, only if you have no header
                     )


输出量:

0  1        2        3  4
0  0  1  (10,12)  (20,11)  9

sirbozc5

sirbozc52#

当阅读csv文件时,使用dtype参数并将其设置为string。然后您仍然可以将元组或整数值保存在您的数组列中,但作为string。
之后,编写一个函数,以您需要的方式解析列。

df = pd.read_csv("my_csv.csv", dtype=str)

字符串

相关问题