这是我尝试使用 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='!')
我遇到了两个问题,首先是它读取所有行并仅填充注释行将只是 None 或 NaN 并读取 BEGIN
和 END
标记。这也会导致单元格索引发生偏移,这是我的第二个问题。
通过删除注释行以及 BEGIN
和 END
标签将其读入数据帧的正确 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/