Pandas:从csv文件获取数据,而不管Header位置如何

时间:2014-09-17 07:18:29

标签: python csv pandas dataframe

我有csv文件,我必须使用panda制作数据帧。 通常文件的格式如下:

Days    Page Impressions    Visits  Bounces
2012-12-15  692041  87973   31500
2012-12-16  602356  78663   29298
2012-12-17  730902  99356   37436
2012-12-18  730071  97844   37199
2012-12-19  774964  110446  43858
2012-12-20  419256  44592   13961
2012-12-21  320966  33692   10076
2012-12-22  200992  18840   5170


我面临的问题是有时CSV文件是这样的:

SomeName ABCD           
Account: AccountHolder Name         
Report Author: Analysis         
Description: Some variable length description       

Pivot           

Pivot           
Days    Page Impressions    Visits  Bounces
2012-12-15  367143  69147   30222
2012-12-16  334675  63702   28040
2012-12-17  409260  77171   33642
2012-12-18  427765  78221   33575
2012-12-19  434781  79850   34300
2012-12-20  463448  81361   34501
2012-12-21  447964  81897   35242
2012-12-22  368477  70352   31014
2012-12-23  321891  61973   27521

Time of Calculation: 2013-03-15 02:14:58            

如何只获取天数,页面展示次数,访问次数,退回次数

列中关联的数据

我知道我可以list(my_dataframe.columns.values)获取标题名称但它不适用于CSV文件类型-2。

他们的任何现有的Pythonic方式是用大熊猫做的吗? 感谢

3 个答案:

答案 0 :(得分:4)

两遍读取文件。首先枚举文件中的行以获取标题所在的行。将该行号传递给csv解析器arrows。

with open('file.csv', 'rb') as infile:
    for lineno, line in enumerate(infile):
        if line[:4] = 'Days':
            break

df = pd.read_csv('file.csv', skiprows=lineno)

答案 1 :(得分:0)

使用pandas.io.parsers.read_csv。它有一个选项“skiprows”。如果您的文件在标题中始终具有相同的6行,则可以使用skiprows = 6

skiprows:list-like或integer 要在文件开头跳过(0索引)或要跳过的行数(int)的行号 即:

import pandas as pd
df = pd.read_cs("path/to/file.csv", sep=";", skiprows=6)

答案 2 :(得分:0)

您还可以在熊猫read_csv中使用该变量。

对于您而言,它看起来像:

import pandas as pd
df = pd.read_csv(file,header = 6 )

所以您的脚本将使用第六行作为标题,然后开始读取数据...