熊猫在没有标题的情况下阅读

时间:2015-03-26 19:27:49

标签: python pandas

如何读取.csv文件(没有标题),当我只想要列的一个子集(比如总共20列中的第4和第7列)时,使用pandas?我似乎无法做usecols

4 个答案:

答案 0 :(得分:212)

为了读取没有标题的csv而且仅针对某些列,您需要为第4列和第7列传递参数header=Noneusecols=[3,6]

df = pd.read_csv(file_path, header=None, usecols=[3,6])

请参阅docs

答案 1 :(得分:27)

先前的回答是正确的,但我认为,额外的names参数将使其完美,这是推荐的方式,尤其是在csv没有headers的情况下。

解决方案

使用usecolsnames参数

df = pd.read_csv(file_path, usecols=[3,6], names=['colA', 'colB'])

其他阅读内容

或使用header=None明确告诉人们csv没有标题(无论两行都是相同

df = pd.read_csv(file_path, usecols=[3,6], names=['colA', 'colB'], header=None)

以便您可以通过

检索数据
# with `names` parameter
df['colA']
df['colB'] 

代替

# without `names` parameter
df[0]
df[1]

解释

基于read_csv,当显式传递names时,header的行为将类似于None而不是0,因此可以跳过{{ 1}}(如果header=None存在。

答案 2 :(得分:7)

确保为第4和第7列指定通行header=None并添加usecols=[3,6]

答案 3 :(得分:0)

根据文档 https://pandas.pydata.org/docs/reference/api/pandas.read_csv.html : headerint,int 列表,默认为“推断” 用作列名的行号和数据的开头。默认行为是推断列名:如果没有传递名称,则行为与 header=0 相同,并且从文件的第一行推断列名,如果显式传递列名,则行为与 header=None 相同.显式传递 header=0 以能够替换现有名称。标题可以是一个整数列表,用于指定列上多索引的行位置,例如[0,1,3]。未指定的中间行将被跳过(例如,本例中的 2 被跳过)。请注意,如果skip_blank_lines=True,此参数将忽略注释行和空行,因此header=0 表示数据的第一行而不是文件的第一行。

namesarray-like,可选 要使用的列名称列表。如果文件包含标题行,则应明确传递 header=0 以覆盖列名称。不允许在此列表中重复。

columts = ['Day', 'PLMN', 'RNCname']
tempo = pd.read_csv("info.csv", sep=';', header=0, names=columts, index_col=False)