读取具有不规则列数的csv文件

w6mmgewl  于 2021-09-08  发布在  Java
关注(0)|答案(0)|浏览(437)

我试图调整一些数据,但原始数据每行的列数不同。我知道有一些类似的问题,比如
使用pandas读取列数不规则的csv文件几乎可以描述我的问题,但在这种情况下,用户有固定数量的最大列/行。在我的例子中,我不知道最大列数(以及它在哪一行)。

我的数据集的结构

数据集(您可以在此处找到:https://docs.google.com/spreadsheets/d/1txigrvlofn5paob_-jvpt7ent2znzmzmlk6fzhhznsa/edit?usp=sharing)有一个标题行,但标题是无用的,我不会导入它。在第8列之后,以下6列连续重复
1 CAR-299.80115.12等2重型车辆-333.1289.02等。

第一种方法:

使用(如何在加载python之前知道csv行数?)

dataname = 'csv_file.csv'
lines = sum(1 for line in open(dataname))

我可以在不加载python中的csv的情况下计算行数,但是我还没有找到一种类似的方法来计算不加载csv文件的列数。

第二种方法:

我在python/pandas中找到了另一种方法(几乎解决了我的问题)——parsererror:错误标记化数据。c错误:第i行中预期有x个字段,而解决该错误的是y( pandas.errors.ParserError: Error tokenizing data. C error: Expected 1701 fields in line 3, saw 2829 )当我使用Pandas的时候 data_raw2 = pd.read_csv(dataname, delimiter=';', decimal='.', header=0) . 此线程中的解决方案是使用

with open(dataname, 'r', encoding='utf-8') as f:
    bla = pd.read_csv(f,  engine='python').dropna(how='all', axis=1)

但这给了我一个给定行数但只有一列的联合 Dataframe (见下图)。

我的目标

我进一步分析的目标是转置该表,将车辆类型从“car”(string)重写为1(int/float),并添加一个新的标题,如下面的示例所示,并将其转换为aumpy数组
idtypetimestampxyva_tana_LonlaneDirection 110.0012115.120.2-0.411110.5064116.000.10.111 230.506489.020.10.122

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题