如何在.csv 文件(没有标题)中读取,并且当我只想要列的子集(例如总共 20 列中的第 4 和第 7 列)时,使用熊猫?我似乎无法做到usecols

为了读取没有标题的 csv,并且仅对于某些列,您需要为第 4 列和第 7 列传递 paramsheader=None
和usecols=[3,6]
:
df = pd.read_csv(file_path, header=None, usecols=[3,6])
See thedocs
以前的答案是好的和正确的,但是在我看来,一个额外的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]
Explain
基于read_csv,当names
被显式传递时,header
将表现得像None
而不是0
,因此当names
存在时,可以跳过header=None
。

确保为第 4 列和第 7 列指定 pheader=None
并添加usecols=[3,6]
。
默认行为是推断列名:如果没有传递名称,则行为与 header = 0 相同,并且列名从文件的第一行推断,如果列名被显式传递,则行为与 header = None 的现有位置相同。
namesarray-like,可选的要使用的列名称列表。如果文件包含标题行,则应显式传递 header = 0 以覆盖列名称。不允许此列表中的重复项。
columts = ['Day', 'PLMN', 'RNCname']
tempo = pd.read_csv("info.csv", sep=';', header=0, names=columts, index_col=False)
本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处
评论列表(55条)