【问题标题】:Pandas read data without header or index熊猫读取没有标题或索引的数据
【发布时间】:2018-10-13 00:45:10
【问题描述】:

这是 .csv 文件:

0   0   1   1   1   0   1   1   0   1   1   1   1
0   1   1   0   1   0   1   1   0   1   0   0   1
0   0   1   1   0   0   1   1   1   0   1   1   1
0   1   1   1   1   1   1   1   1   1   1   1   2
0   1   1   1   0   1   1   1   1   1   1   1   1
0   0   0   1   1   1   0   1   0   0   0   1   1
0   0   0   0   1   1   0   0   1   0   1   0   2
0   1   1   0   1   1   1   1   0   1   1   1   1
0   0   1   0   0   0   0   0   0   1   1   0   1
0   1   1   1   0   1   1   0   0   0   0   1   1

其中第一列必须是像(0,1,2,3,4 ...) 这样的索引,但由于某些原因,它们是零。使用 pandas.read_csv 读取 csv 文件时,有什么方法可以使它们正常吗?

我用

df = pd.read_csv(file,delimiter='\t',header=None,names=[1,2,3,4,5,6,7,8,9,10,11,12]) 

得到类似的东西:

    1   2   3   4   5   6   7   8   9   10  11  12
0   0   1   1   1   0   1   1   0   1   1   1   1
0   1   1   0   1   0   1   1   0   1   0   0   1
0   0   1   1   0   0   1   1   1   0   1   1   1
0   1   1   1   1   1   1   1   1   1   1   1   2
0   1   1   1   0   1   1   1   1   1   1   1   1
0   0   0   1   1   1   0   1   0   0   0   1   1
0   0   0   0   1   1   0   0   1   0   1   0   2
0   1   1   0   1   1   1   1   0   1   1   1   1
0   0   1   0   0   0   0   0   0   1   1   0   1
0   1   1   1   0   1   1   0   0   0   0   1   1

这几乎是我需要的,但第一列(索引)仍然为零。例如,熊猫可以忽略第一列零并自动生成新索引来获得这个:

  0 1 2 3 4 5 6 7 8 9 10 11 12
0 0 1 0 1 1 0 0 0 1 1  1  0  1
1 0 1 0 1 1 0 0 0 1 1  1  1  2
2 0 1 1 1 0 0 1 1 1 1  1  1  2

【问题讨论】:

  • pd.read_csv(file, header=None, index_col=False, sep='\t'),您也不需要names 参数。

标签: python pandas csv numpy


【解决方案1】:

为什么要大惊小怪read_csv?使用np.loadtxt

pd.DataFrame(np.loadtxt(file, dtype=int))

   0   1   2   3   4   5   6   7   8   9   10  11  12
0   0   0   1   1   1   0   1   1   0   1   1   1   1
1   0   1   1   0   1   0   1   1   0   1   0   0   1
2   0   0   1   1   0   0   1   1   1   0   1   1   1
3   0   1   1   1   1   1   1   1   1   1   1   1   2
4   0   1   1   1   0   1   1   1   1   1   1   1   1
5   0   0   0   1   1   1   0   1   0   0   0   1   1
6   0   0   0   0   1   1   0   0   1   0   1   0   2
7   0   1   1   0   1   1   1   1   0   1   1   1   1
8   0   0   1   0   0   0   0   0   0   1   1   0   1
9   0   1   1   1   0   1   1   0   0   0   0   1   1

默认分隔符是空格,默认情况下不读入任何标题/索引。也不会推断列类型,因为dtype 被指定为int。总而言之,这是一个非常简洁和强大的替代方案。

【讨论】:

    【解决方案2】:

    你可能想要index_col=False

    df = pd.read_csv(file,delimiter='\t', 
                     header=None, 
                     index_col=False) 
    

    来自Docs

    如果您的文件格式不正确,每行末尾都有分隔符, 您可能会考虑使用 index_col=False 来强制熊猫使用 第一列作为索引

    【讨论】:

      猜你喜欢
      • 2021-11-11
      • 1970-01-01
      • 2015-05-30
      • 2023-01-26
      • 2014-08-26
      相关资源
      最近更新 更多