我有一个.csv包含20+列。问题是我有一个列包含0,1,“(10,12),“(20,11)",9当试图在一个嵌套框架中使用read_csv读取它时,“”值不会被解析。我可以使用什么来解析单元格中的(10,12)值?我尝试使用所有read_csv选项,如quotechar,quoting和doublequote。没有帮助。我尝试替换“,但将值分为2列。
xv8emn3q1#
你的例子的问题是你的报价是不平衡的:
0, 1, "(10,12), "(20,11)", 9
字符串应该是:
0, 1, "(10,12)", "(20,11)", 9
型你可以通过检查),并添加缺少的引号来修复这个问题(这里的例子是使用正则表达式)。此外,命令和引号之间的空格默认情况下不会被解析器接受。为了避免这种情况,你必须将skipinitialspace=True传递给read_csv:
),
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
型
sirbozc52#
当阅读csv文件时,使用dtype参数并将其设置为string。然后您仍然可以将元组或整数值保存在您的数组列中,但作为string。之后,编写一个函数,以您需要的方式解析列。
df = pd.read_csv("my_csv.csv", dtype=str)
字符串
2条答案
按热度按时间xv8emn3q1#
你的例子的问题是你的报价是不平衡的:
字符串
应该是:
型
你可以通过检查
),
并添加缺少的引号来修复这个问题(这里的例子是使用正则表达式)。此外,命令和引号之间的空格默认情况下不会被解析器接受。为了避免这种情况,你必须将skipinitialspace=True
传递给read_csv
:型
输出量:
型
sirbozc52#
当阅读csv文件时,使用dtype参数并将其设置为string。然后您仍然可以将元组或整数值保存在您的数组列中,但作为string。
之后,编写一个函数,以您需要的方式解析列。
字符串