在熊猫中读取除CSV文件的最后一行

ele*_*ora 14 python dataframe pandas

我有一些CSV文件,我在熊猫中读到了:

#!/usr/bin/env python

import pandas as pd
import sys

filename = sys.argv[1]
df = pd.read_csv(filename)
Run Code Online (Sandbox Code Playgroud)

不幸的是,这些文件的最后一行通常是损坏的(逗号数量错误).目前我在文本编辑器中打开每个文件并删除最后一行.

是否可以删除加载CSV的同一个python/pandas脚本中的最后一行,以节省必须采取这个额外的非自动步骤?

EdC*_*ica 18

传递error_bad_lines=False,它将自动跳过此行

df = pd.read_csv(filename, error_bad_lines=False)
Run Code Online (Sandbox Code Playgroud)

它的优点error_bad_lines是它会跳过而不会出现任何错误的线路,但如果最后一行始终是duff则skipfooter=1更好

感谢@DexterMorgan指出该skipfooter选项强制引擎使用比c引擎慢的python引擎来解析csv.

  • 有一个选项'skiprows',c引擎支持.如果您知道csv的行数,可以按如下方式添加:`pd.read_csv(filename,skiprows = [999])`(在我的情况下有1000行) - 请注意,您必须在列表,如果要指定给定行号的行. (2认同)

Man*_*hit 8

阅读http://pandas.pydata.org/pandas-docs/version/0.16.2/generated/pandas.read_csv.html.这里'skipfooter'参数可用于指定不想从末尾读取.csv文件的行.可能它可以帮助你.

  • 是的`skipfooter = 1`也可以在这里工作+1 (5认同)

dro*_*ops 7

使用skipfooter参数读取 csv 时,您可以省略最后 n 行:

df = pd.read_csv(filename, skipfooter=3, engine='python')
Run Code Online (Sandbox Code Playgroud)

在此示例中,省略了最后 3 行。