pandas - 熊猫可以解析带有未知数量评论,标题和要跳过的行的csv文件
问题描述
我有一个文件,其中包含未知数量的注释,然后是标题,然后是与数据类型有关的第二行,但对我来说实际上只是垃圾。
# Comment Line
# Another comment -- there could be lots
index value
not wanted
1 10
2 20
有了评论数量的先验知识(这违反了评论的想法),文件可以被
pandas pd.read_csv(fname, header=0, comment='#', skiprows=[3])
不过,就我而言,数字 3 是未知的。我只知道标题是索引 0 不计算评论,我知道不需要的行是索引 1 不计算评论。header
按我想要的方式工作,但不是skiprows
。有没有办法利用这些信息轻松读取文件?通过“容易”,我的意思是缺少以下内容,打开文件,计算初步评论,然后阅读:
ncomment = 0
crows = []
fname = "sample.csv"
with open(fname,"r") as f:
while f.readline().startswith("#"):
crows.append(ncomment)
ncomment += 1
crows = crows + [ncomment+1]
data = pd.read_csv(fname,header=0,skiprows = crows, index_col=0,delim_whitespace = True)
print(data)
解决方案
您可以使用header
+comment
来获取 MultiIndex,然后删除不需要的级别。header
在删除评论后评估,所以它总是[0, 1]
. (我正在使用delim_whitespace=True
,因为您的示例数据中没有任何','
s )。
df = pd.read_csv('sample.csv', comment='#', header=[0, 1], delim_whitespace=True)
# index value
# not wanted
#0 1 10
#1 2 20
我们可以放在同一行:
df = (pd.read_csv('sample.csv', comment='#', header=[0, 1], delim_whitespace=True)
.droplevel(1, axis=1))
# index value
#0 1 10
#1 2 20
推荐阅读
- python - Django 语法错误
- c++ - 在 Mac 上编译基本 C++ 程序时出现“未定义符号”问题
- mysql - 查找浮点数
- python - 使用 Plotly 绘制动画 3D 曲面图
- .net-core - ActionFilterAttribute 类在 WebApi 启动时被多次实例化
- azure-devops - 在 Azure DevOps 服务器代码搜索中搜索 XML 节点
- nginx - 在nginx中root几个目录
- linux - 如何在游戏笔记本电脑上安装 linux 发行版?
- python - Python解释器没有出现在Pycharm中
- matlab - 如何在 MATLAB 中将“8.1076e-05”转换为 0.0000811?