python - Pandas read_csv() 有条件地跳过标题行

标签 python pandas csv

我正在尝试读取 csv 文件,但我的 csv 文件有所不同。有些有不同的格式,有些有其他格式。我正在尝试添加控件,以便不需要编辑代码或输入文件。

我的问题是,其中一些 csv 文件在列标题上方有一行字符串。一个例子:

Created on 12-11-2018,CryptoDataDownload.com
Date,Symbol,Open,High,Low,Close,Volume From,Volume To
2018-12-11 11-AM,ADABTC,8.6e-06,8.61e-06,8.55e-06,8.57e-06,301141.7,2.59
2018-12-11 10-AM,ADABTC,8.69e-06,8.72e-06,8.6e-06,8.6e-06,236949.63,2.05

如果我导入它,分隔符将使用第一行并将文件分成两列,分别为 Created on 12-11-2018CryptoDataDownload.com

这就是 df.head() 的样子:

                        Created on 12-11-2018 CryptoDataDownload.com
Date             Symbol Open     High     Low      Close              Volume From                          Volume To
2018-12-11 11-AM ADABTC 8.6e-06  8.61e-06 8.55e-06 8.57e-06              301141.7                               2.59
2018-12-11 10-AM ADABTC 8.69e-06 8.72e-06 8.6e-06  8.6e-06              236949.63                               2.05
2018-12-11 09-AM ADABTC 8.7e-06  8.7e-06  8.62e-06 8.69e-06             509311.39                               4.41
2018-12-11 08-AM ADABTC 8.69e-06 8.7e-06  8.63e-06 8.7e-06              111367.34                             0.9656

我想检查这个文件是否有这一行,如果有就跳过它。

我该怎么做?

最佳答案

如果 CSV 文件中的标题遵循类似的模式,您可以执行一些简单的操作,例如在确定是否跳过第一行之前先嗅出第一行。

filename = '/path/to/file.csv'
skiprows = int('Created in' in next(open(filename)))
df = pd.read_csv(filename, skiprows=skiprows)
<小时/>

好的做法是使用上下文管理器,因此您也可以这样做:

filename = '/path/to/file.csv'
skiprows = 0
with open(filename, 'r+') as f:
    for line in f:
        if line.startswith('Created '):
            skiprows = 1
        break
df = pd.read_csv(filename, skiprows=skiprows)

关于python - Pandas read_csv() 有条件地跳过标题行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53739172/

相关文章:

python - opencv中的三角形填充

python - 获取列表中重复元素的索引范围

python - numpy 数组维度不匹配

python - 我需要在第 n 个索引处插入一行,该行将对其下方的所有行进行求和

java - 在 Excel 2007 中打开 CSV 文件时,任何列中的前导零都会丢失

python - 加载字典对象导致内存峰值

python - 在 Python 中使用 "for"计算索引

python - 用两列对 pandas groupby 进行排序

python - 将字符串 (csv) 的子列表转换为 float (列表理解)

scala - 在 scala 中读取 csv 的通用类