python - 从 csv 读取时如何检测和删除数据集上方的行?

标签 python python-3.x pandas csv

我有一个看起来像这样的 csv:

name: john
date modified: 2018-09
from: jane
colum1 column2 column3
data    data    data 

在从 csv 读取表格数据之前,我可以应用任何函数来去除任何行吗?目前 column 上面的行在我读入时看起来像奇怪的字符。

新表应该是这样的:

colum1 column2 column3
data    data    data 

最佳答案

我会做这样的事情:

from io import StringIO
with open('filename.csv') as f:
    lines = f.readlines()
s = StringIO(''.join((l for l in lines if ':' not in l)))
pd.read_csv(s)

或者:

with open('filename.csv') as f:
    lines = f.readlines()
skip_rows_idx = [i for i, l in enumerate(lines) if ':' in l]
pd.read_csv('filename.csv', skiprows=skip_rows_idx)

如果标题中没有冒号,则可以修改上面的代码(第一个示例)以删除第一行,如下所示:

import itertools
s = StringIO(''.join(itertools.dropwhile(lambda l: ':' in l, lines)))

(假设标题之后没有“坏”行)。

关于python - 从 csv 读取时如何检测和删除数据集上方的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52371578/

相关文章:

Python 和 Scipy : How to fit a von mises distribution?

python - 将 Python 模块导入 Jupyter notebook

python - 具有概率估计的增量 SVM

python - 为什么我在乘以 Numpy 乘积输出时会出现溢出错误?

python-3.x - 如何使用python函数迭代从另一个函数接收的文件

python - 多个复选框一个提交按钮多种形式

python-3.x - 该算法(解决 leetcode 问题 650)(问题 2)的时间复杂度是多少?

Python Pandas - Groupby 并制作列值标题

python - 代码有效,但在方法内部插入时无效

Pandas 按日期时间分组