【发布时间】:2017-01-10 21:26:26
【问题描述】:
我想从标题不在第一行的 csv 文件中读取数据帧。例如:
In [1]: import pandas as pd
In [2]: import io
In [3]: temp=u"""#Comment 1
...: #Comment 2
...:
...: #The previous line is empty
...: Header1|Header2|Header3
...: 1|2|3
...: 4|5|6
...: 7|8|9"""
In [4]: df = pd.read_csv(io.StringIO(temp), sep="|", comment="#",
...: skiprows=4).dropna()
In [5]: df
Out[5]:
Header1 Header2 Header3
0 1 2 3
1 4 5 6
2 7 8 9
[3 rows x 3 columns]
上面代码的问题是我现在不知道在标题之前会有多少行,因此我不能像这里那样使用skiprows=4。
我知道我可以遍历文件,就像问题 Read pandas dataframe from csv beginning with non-fix header 中一样。
我正在寻找一个更简单的解决方案,例如让pandas.read_csv 忽略任何空行并将第一个非空行作为标题。
【问题讨论】:
-
抱歉,
pd.read_csv(io.StringIO(temp), sep="|", comment="#")不起作用? -
不,注释行被翻译成空行,不会被忽略。
-
会不会是版本问题?
skip_blank_lines=True是 0.18.1 中的默认值。 -
当我使用
pd.read_csv(io.StringIO(temp), sep="|", comment="#")运行您的示例时,它的工作方式与您在所需输出中描述的完全一样。
标签: python csv pandas file-io data-import