【问题标题】:How to read specific column index from csv using pandas如何使用 pandas 从 csv 读取特定列索引
【发布时间】:2015-09-07 15:04:28
【问题描述】:

是否有某种方法可以使用 Pandas(最好是 read_csv)从 csv 文件中仅读取具有特定索引的特定列?我知道 read_csv 提供了按列名读取特定列的能力,但是数据文件没有标题,所以我不能使用列名。请注意,文件太大,所以我不想读取整个文件然后子集。谢谢。

【问题讨论】:

  • use_cols 支持基于序数的索引:use_cols=[1,4] 将仅读取第 2 列和第 5 列
  • 非常感谢。它有效。
  • 只是一个“信息” - 你不能结合索引和名称,例如use_cols = ['Name', 5, 'Date' not 工作]。它返回一个错误'ValueError:'usecols'必须是所有字符串,所有unicode,所有整数或可调用的'。

标签: python csv pandas


【解决方案1】:

这是一个说明 EdChum 给出的答案的例子。加载 CSV 文件还有很多其他选项,请查看API reference

raw_data = {'first_name': ['Steve', 'Guido', 'John'],
        'last_name': ['Jobs', 'Van Rossum', "von Neumann"]}
df = pd.DataFrame(raw_data)
# Saving data without header
df.to_csv(path_or_buf='test.csv', header=False)
# Telling that there is no header and loading only the first name
df = pd.read_csv(filepath_or_buffer='test.csv', header=None, usecols=[1], names=['first_name'])
df

  first_name
0      Steve
1      Guido
2       John

【讨论】:

    【解决方案2】:
    import pandas as pd
    data = pd.read_csv('file.csv', usecols=['column_name'])
    

    usecols 的参数包含列名列表。如果想要多列,则用逗号分隔它们,即['column_name1, 'column_name2', 'column_name3']

    【讨论】:

      猜你喜欢
      • 2019-12-21
      • 2019-08-12
      • 2018-07-31
      • 1970-01-01
      • 2020-11-12
      • 2013-12-05
      • 1970-01-01
      • 1970-01-01
      • 2019-05-12
      相关资源
      最近更新 更多