【问题标题】:Creating a dataframe from an unknown row [duplicate]从未知行创建数据框[重复]
【发布时间】:2018-04-06 11:40:00
【问题描述】:

如果我有一个如下所示的 .csv 文件:

0,0
1,1
2,2
3,3
4,4
5,5,5,5
6,6,6,6
7,7,7,7

如何根据行号从第 5 行创建数据框?显然,我知道你可以制作 header=5,但我希望它更像 header=#when it reaches 4 columns#,不管那一行是什么。

我意识到这个问题并不像我需要的那么具体,所以我在这里重申:Creating a dataframe from different rows

【问题讨论】:

    标签: python pandas csv dataframe row


    【解决方案1】:

    您可以在理解中使用str.count。然后将其包装在数据框构造函数中。

    from pandas.io.common import StringIO as sio
    pd.read_csv(sio(
        ''.join(l for l in open('test.csv') if l.count(',') > 2)
    ), header=None)
    
       0  1  2  3
    0  5  5  5  5
    1  6  6  6  6
    2  7  7  7  7
    

    【讨论】:

      【解决方案2】:

      我的解决方案是首先将 csv 作为普通文件读取,逐行过滤该文件,然后使用 io.StringIO 将“编辑后的 ​​csv”作为数据帧读取。注意:这不适用于大文件。

      例如:

      import io
      import pandas as pd
      
      new_csv = []
      with open('csv.csv') as f:
          for line in f:
              if len(line.split(',')) >= 4:
                  new_csv.append(line)
      file_io = io.StringIO('\n'.join(new_csv))
      df = pd.read_csv(file_io)
      

      【讨论】:

        猜你喜欢
        • 2021-07-27
        • 2018-02-14
        • 2018-03-15
        • 1970-01-01
        • 2020-03-31
        • 2020-07-15
        • 2020-12-04
        • 2021-07-02
        • 1970-01-01
        相关资源
        最近更新 更多