gpt4 book ai didi

python - Pandas read_csv 的 ParserError

转载 作者:太空宇宙 更新时间:2023-11-03 11:19:33 29 4
gpt4 key购买 nike

我正在尝试读取每行列数不同的 txt 文件。这是我的文件的开头:

60381 6
1 0.270 0.30 0.30 0.70 0.70
4.988 4.988 4.988 4.988 4.988 4.988 4.988 4.988 4.988 4.988 4.988 4.988
2 0.078 0.30 0.30 0.70 0.70
5.387 5.312 5.338 4.463 4.675 4.275 4.238 3.562 3.175 3.925 4.950 4.762
6 0.241 0.30 0.60 0.70 0.40
3.700 3.200 2.738 2.325 1.250 0.975 1.175 1.950 2.488 3.613 3.987 3.950
7 0.357 0.30 0.60 0.70 0.40
1.212 1.125 1.050 0.950 0.663 0.488 0.425 0.512 0.637 0.900 1.112 1.188
8 0.031 0.30 0.70 0.70 0.30
0.225 0.213 0.200 0.175 0.200 0.213 0.375 0.887 0.975 0.512 0.262 0.262
10 0.022 0.30 0.80 0.70 0.20
0.712 0.700 0.738 0.550 0.513 0.688 0.613 0.600 0.850 0.812 0.800 0.775
60382 5
6 0.197 0.30 0.60 0.70 0.40
3.700 3.200 2.738 2.325 1.250 0.975 1.175 1.950 2.488 3.613 3.987 3.950
7 0.413 0.30 0.60 0.70 0.40
1.212 1.125 1.050 0.950 0.663 0.488 0.425 0.512 0.637 0.900 1.112 1.188
8 0.016 0.30 0.70 0.70 0.30
0.225 0.213 0.200 0.175 0.200 0.213 0.375 0.887 0.975 0.512 0.262 0.262
10 0.111 0.30 0.80 0.70 0.20
0.712 0.700 0.738 0.550 0.513 0.688 0.613 0.600 0.850 0.812 0.800 0.775
11 0.263 0.30 0.50 0.70 0.50
1.812 1.388 1.087 0.825 0.538 0.400 0.338 0.400 0.500 0.925 0.962 1.100

我试过使用 pandas read_csv 来读取它:

import pandas as pd
data = pd.read_csv('./myfile.txt',header=None,sep='\s')

这给出了以下错误:

ParserError: Expected 6 fields in line 3, saw 12. Error could possibly be due to quotes being ignored when a multi-char delimiter is used.

所以我的文件没有多字符定界符或引号。我已经尝试过在这个论坛中找到的解决方案,建议使用:

data = pd.read_csv(open('./myfile.txt','r'), header=None,encoding='utf-8', engine='c')

虽然这解决了上面的错误,但我看到的数组没有使用空格作为列的分隔符,输出只有 1 列:

data output

我应该如何读取文件以获得每个值的列?我不介意是否有 nan 值填充其余部分。

最佳答案

如果您已经设法在单个列中获取数据,您可以使用 Series.str.split()解决此问题。

这是您提供的一些示例数据的示例(您可以在 split() 中使用任何字符串或正则表达式作为分隔符):

df[0].str.split(' ', expand=True)

0 1 2 3 4 5 6 7 8 9 \
0 0.270 0.30 0.30 0.70 0.70 None None None None None
1 4.988 4.988 4.988 4.988 4.988 4.988 4.988 4.988 4.988 4.988

如果你这样做,那么你也可以使用 pd.DataFrame(open(...).readlines()) 或类似的东西创建数据框,因为你不会受益完全来自 read_csv(),并且您的文件不完全是标准的 csv 文件。

# f is a StringIO with some of your sample data to simulate a file
df = pd.DataFrame(line.strip().split(' ') for line in f)

0 1 2 3 4 5 6 7 8 9 \
0 60381 6 None None None None None None None None
1 1 0.270 0.30 0.30 0.70 0.70 None None None None
2 4.988 4.988 4.988 4.988 4.988 4.988 4.988 4.988 4.988 4.988
3 2 0.078 0.30 0.30 0.70 0.70 None None None None
4 5.387 5.312 5.338 4.463 4.675 4.275 4.238 3.562 3.175 3.925

当然,您也可以通过确保每行包含相同数量的列来修复输入文件,这将解决 ParserError 问题。

关于python - Pandas read_csv 的 ParserError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45764129/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com