【发布时间】:2021-10-04 22:49:43
【问题描述】:
我需要解析大量csv 文件来填充数据库。 csv 文件的格式令人困惑。这是文件的简化演示,然后我将评论以下内容:
| A | B | C | D | E | F | G | H | I | |
|---|---|---|---|---|---|---|---|---|---|
| 1 | ll |
0 | 10 | 4.9 | 50 | ||||
| 2 | hl |
2 | 20 | 6.1 | 60 | ||||
| 3 | unit |
km/s | second | V | second | ||||
| 4 | param |
SN | part_no | date | passfail | param01 | param02 | param03 | param04 |
| 5 | ABC11 | p1 | 1/1/2020 | pass | 1 | 11 | 5 | 54 | |
| 6 | ABC22 | p1 | 1/1/2020 | pass | 1.5 | 15 | 5.5 | 56 | |
| 7 | ABC33 | p2 | 1/3/2020 | fail | 6 | 30 | 3 | 57 |
我需要创建一个 datadataframe(s) 以允许基于以下区域进行选择:
-
csv[A1:H4]被视为文件的标题部分。 -
csv[A1:A4]是csv[F1:I43]的名称。所以,['ll', 'hl', 'unit', 'param']是行的名称:1、2、3、4,从col[F]开始。 -
csv[B4:E7]: 是其余列的汇总区域。 -
csv[F4:I7]:是针对ll(或“下限”)和hl(或“上限”)实际检查的数据详细信息。
使用Pandas,读取此类文件的最有效方法是什么(根据上述定义)?
免责声明:我的问题可能被视为“基于意见”,我不这么认为。我不知道此类文件的最佳做法是什么。
CSV 示例
这是我用来根据 cmets 中的要求对我的代码进行建模的 CSV。有一件事让我的生活更轻松,就是我尽早将第 4 行带到了顶部。
ll,,,,,0,10,4.9,50
hl,,,,,2,20,6.1,60
unit,,,,,km/s,second,V,second
param,SN,part_no,date,passfail,param01,param02,param03,param04
,ABC11,p1,1/1/2020,pass,1,11,5,54
,ABC22,p1,1/1/2020,pass,1.5,15,5.5,56
,ABC33,p2,1/3/2020,fail,6,30,3,57
【问题讨论】:
-
除了表格,能不能在文末发个CSV示例?
-
我相信你的意思是 I4 而不是 I43 ?如果您的数据非常具体,那么是否可以只读取然后使用 .loc[] 来提取该部分,对其进行转换并将其作为您需要的 Dataframe 表重新安装?
-
@RaymondToh,不完全是。一个主要区别是我正在使用的文件的大小,以及我必须处理的文件数量。我希望有一种解决方案可以在一个可管理的数据框中读取内容。
-
@EBDS 不错,但实际上是
I3