【问题标题】:pandas read_csv set `dtype` by column index (not name)pandas read_csv 按列索引(不是名称)设置“dtype”
【发布时间】:2018-06-24 00:52:17
【问题描述】:

file.txt 有一个标题和四列。但是标题一直在变化。

类似:

,'non_standard_header_1','non_standard_header_2','non_standard_header_3'
,kdfjlkjdf, sdfdfd,,
,kdfjlkjwwdf, sdfddffd,,
,kdfjlkjwwdf,, sdfddffd,

我想在 pandas 中导入 file.txt,并且我希望将列作为 object 导入。直观的方法(对我来说):

dtype = [object, object, object] 如:

    daily_file              = pandas.read_csv('file.txt',
                                              usecols      = [1, 2, 3],
                                              dtype        = [object, object, object])

不起作用,运行上面,我得到:

data type not understood

如何在导入时设置列 dtype 而不引用(现有)列名?

【问题讨论】:

  • 通过实验,我找到了一种方法来处理这个问题。给定一个带有单个未标记列的 CSV(第一个,由 pandas.to_csv 创建,没有为索引指定标签),Pandas 为该列分配了名称“Unnamed: 0”;我能够使用相同的字符串作为dtype 的字典键,并正确控制列的数据类型。不确定这是多么普遍,所以把它和一个适当的“答案”留给其他人。

标签: python pandas types


【解决方案1】:

pd.read_csv(..., dtype=object) 将在所有读入的列中全局应用对象 dtype,如果这是您要查找的内容。

否则,如果要将数据类型映射到列名,则需要传递 {'col' : dtype} 形式的字典。

【讨论】:

  • 差不多:如何将 dtypes 映射到列 numbers
  • @user189035 尝试将键更改为索引。但如果这不起作用,那么恐怕 pandas 还不支持它。
  • 索引似乎适用于dtype,(use_cols 具有按名称或索引引用的功能)但不确定如果列名与索引重叠会发生什么。跨度>
猜你喜欢
  • 2016-08-20
  • 1970-01-01
  • 2016-10-24
  • 2013-02-21
  • 1970-01-01
  • 2018-05-18
  • 2019-11-30
  • 2021-05-31
  • 2016-11-02
相关资源
最近更新 更多