熊猫读取没有标题的表格
- 2025-01-08 08:49:00
- admin 原创
- 105
问题描述:
使用 pandas,如何只读取没有标题的 .csv 文件中的列子集(例如第 4 列和第 7 列)?我似乎无法使用 来做到这一点usecols
。
解决方案 1:
为了读取没有标题的 csv 并且只需要传递某些列的参数header=None
以及usecols=[3,6]
第 4 列和第 7 列:
df = pd.read_csv(file_path, header=None, usecols=[3,6])
查看文档
解决方案 2:
以前的答案都很好而且正确,但在我看来,一个额外的names
参数会让它变得完美,而且它应该是推荐的方式,特别是当 csv 没有headers
.
解决方案
用途usecols
及names
参数
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
可以跳过。header=None
`names`
解决方案 3:
确保为第 4 列和第 7 列指定 passheader=None
和 add 。usecols=[3,6]
解决方案 4:
您还可以调用read_table()
(header=None
将文件的第一行读取为数据的第一行):
df = pd.read_table('test.tsv', sep=',', usecols=[3,6], header=None)
如果分隔符是(.tsv 文件等),则此功能更有用,
因为默认分隔符是
(read_csv
与其默认分隔符不同,
)。
解决方案 5:
按照文档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)