【发布时间】:2020-04-09 11:42:18
【问题描述】:
我正在处理 25,000 行的多个 csv 数据文件,并且应该是 2 列。这些数据文件来自我用来进行数据测量的示波器。文件如下所示:
错误的文件
TIME,CH1
-2.500000e-01,2.00e-03,
-2.499800e-01,2.00e-03,
-2.499600e-01,0.00e+00,
我编写了代码来处理我使用以前的示波器采集的数据,它工作得很好。该数据如下所示:
好文件
TIME,CH1,CH1 Peak Detect
-1.8720e-01,-0.001,-0.155
-1.8712e-01,0.005,0.143
-1.8705e-01,0.001,-0.151
我只使用前 2 列的数据。除了额外的列之外,我可以看到两个数据文件之间的唯一区别是,我遇到问题的那个文件的每一行都以逗号结尾,而另一个则没有。
为了从文件中获取数据,我一直在使用以下方法来访问和处理每列中的数据:
r0 = pandas.read_csv("BADFILE.csv")
t0 = r0["TIME"]
v0 = r0["CH1"]
在哪里
type(r0): pandas.core.frame.DataFrame
type(t0): pandas.core.series.Series
当我在bad file的python环境中查看r0时,显示为
TIME CH1
-0.25000 0.008 NaN
-0.24998 0.000 NaN
-0.24996 -0.002 NaN
我认为这表明索引存在问题,因为 好文件 将 r0 显示为
TIME CH1 CH1 Peak Detect
0 -0.19200 -0.001 -0.021
1 -0.19192 -0.001 0.021
2 -0.19185 -0.001 -0.023
我不确定如何解决这个索引问题。我已经探索过了
- 想办法删除坏文件行中的最后一个字符(找不到)
- 重命名坐标区并创建新索引(可能很有希望,但我不明白如何实现)
- 在每个文件的标题行中添加逗号(无效)
以我的经验水平,我很难找到和应用可以完成这些事情的解决方案,并将此数据文件制作成我可以使用的形式。
我发现了一个伪劣的解决方法,它涉及手动将每个 csv 文件保存为 Excel 文件并使用 pandas 将它们导入为 excel 文件。这会导致我从旧的 csv 文件中获得正确的索引。但是,我经常处理大量文件,所以这不是最实用的解决方案。
如果您对如何解决此问题有任何想法,我们将不胜感激。
【问题讨论】:
-
如果您要遍历 CSV 的每一行,您可以使用
row[:-1]删除结尾逗号,但是如果不是每一行都以逗号结尾,则需要修改
标签: python pandas csv dataframe indexing