python - 使用 Pandas 读取 CSV 并处理评论

标签 python csv pandas

这是我尝试使用 Pandas 读取数据文件的示例。所有文件都有不同数量的注释行,但都以 BEGIN 开始数据部分,以 END 结束,之后可能还有换行符。

!Example data file
!With commands delimited by exclamation points
!Not always the some number of comment lines
BEGIN
300,-1.0342501,-0.07359
5298,-0.9889674,0.06514
1029,-0.981307,0.130398
1529,-0.971765,0.1945281
END

这是我的 Pandas,用于读取这些文件。

b = pd.read_csv(data_file,,names=['Frequency','Real','Imaginary'],comment='!') 

我遇到了两个问题,首先是它读取所有行并仅填充注释行将只是 NoneNaN 并读取 BEGINEND 标记。这也会导致单元格索引发生偏移,这是我的第二个问题。

通过删除注释行以及 BEGINEND 标签将其读入数据帧的正确 Pandas 是什么?有没有一行优雅的代码可以解决我的这两个问题?

最佳答案

导入整个文件并删除第二个字段为空的所有内容怎么样?

import pandas as pd
import numpy as np    
b = pd.read_csv('sample2.csv',names=['Frequency','Real','Imaginary'],comment='!')
isnotnan = lambda x: not(np.isnan(x))
b2 = b[b['Real'].apply(isnotnan)]

结果b:

  Frequency      Real  Imaginary
0       NaN       NaN        NaN
1       NaN       NaN        NaN
2       NaN       NaN        NaN
3     BEGIN       NaN        NaN
4       300 -1.034250  -0.073590
5      5298 -0.988967   0.065140
6      1029 -0.981307   0.130398
7      1529 -0.971765   0.194528
8       END       NaN        NaN

结果b2:

  Frequency      Real  Imaginary
4       300 -1.034250  -0.073590
5      5298 -0.988967   0.065140
6      1029 -0.981307   0.130398
7      1529 -0.971765   0.194528

重置索引:

b3 = b2.reset_index(drop = True)

b3 的输出:

  Frequency      Real  Imaginary
0       300 -1.034250  -0.073590
1      5298 -0.988967   0.065140
2      1029 -0.981307   0.130398
3      1529 -0.971765   0.194528

关于python - 使用 Pandas 读取 CSV 并处理评论,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25559745/

相关文章:

python - 如何在句子列表中的单词和左括号之间创建空格

python - Spinnaker 管道即代码

python - 在 cdef 类中混合 cdef 和常规 python 属性

powershell - 如何在导出到CSV文件时重命名属性?

python - Pandas 数据框 - 选择行并清除内存?

python - 在多个模式之前查找数字序列的正则表达式,放入新列(Python、Pandas)

python - 如何在给定列值的情况下获取 pandas dataframe 系列名称?

python - 覆盖 Python 类 __str__ 方法的最佳方法是什么?

python-3.x - psycopg2.DataError : invalid input syntax for type double precision: "NULL"

java - 如何使用嵌套 for 循环将数组值打印到 CSV 文件?