【问题标题】:How to skiped few lines and read as dataframe in pandas?如何跳过几行并在熊猫中读取为数据框?
【发布时间】:2019-02-06 11:40:47
【问题描述】:

我的 txt 文件很少。它们是按标签分隔的,但在前几行中有一些垃圾。我必须通过 pd.dataframe 阅读所有内容,删除所有垃圾行并合并在一起。

我通过以下代码读取文件: dataFromRawFile = pd.read_csv('texttt.txt', sep=",", header=None) 打印(dataFromRawFile)

文件看起来像:

[trash]: trash
[trash_umbers]:3224
trash_name
[DATA]
id    number    color
good  good      good
good  good      good
good  good      good 
good  good      good

如何修改 pandas 命令以读取没有所有垃圾行的数据帧?假设我希望从所有文件中唯一的固定值加载文件,即从“id”。 如何通过这个特定的字符串读取该文件?

【问题讨论】:

    标签: python csv rows


    【解决方案1】:

    首先,您需要获取目录中每个文件的id 列的行号(假设它们都是.txt 文件;相应地修改条件)。这可以通过以下方式完成:

    import os
    
    skip_rows = {}
    
    for filename in os.listdir():
        if os.splitext(filename)[1] == '.txt':
            with open(filename) as f:
                lines = f.readlines()
                skip_rows[filename] = [index for index, line in enumerate(lines) if line[:2] == 'id'][0]
    

    现在,skip_rows 应该包含每个文件要跳过的行数。

    然后你可以这样做:

    dataframes = {filename: pd.read_csv(filename, skiprows=n_rows) for filename, n_rows in skip_rows.items()}
    

    并读取dataframes中的每个元素。

    【讨论】:

      【解决方案2】:

      使用read_csvread_tableskiprows 功能。

      在你的情况下尝试skiprows=4

      【讨论】:

      • 感谢重播,但我需要跳过一些字符串。例如:读取文件,查找“id”之前的行并删除上面的所有行
      • 使用 skiprows=4 会得到什么?
      • 我得到了我想要的 :) 但我的一些文件有更多的垃圾行,在每种情况下我都必须修改“跳过行 = 4”。或者也许可以按字符串查找行,给它一个数字并将该数字用作跳过值?编辑:我是这样做的。感谢您的指导。
      【解决方案3】:

      在使用pd.read_csv() 方法时使用pandas 的skiprows 属性。

      例如,您希望将整个表格放入您的数据框中。

      所以写一个函数来在你的文件中定位单词“id”。

      def get_loc():
      with open (filename) as f:
          for num, line in enumerate(f,1):
              if 'word_to_find' in line.strip().lower():
                  break
          return num
      

      这将为您提供位置。

      那就用

      df = pd.read_csv(yourfilename, skiprows = getloc()-1)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-02-07
        • 2018-11-09
        • 1970-01-01
        • 2017-10-16
        • 2018-02-28
        • 2021-11-11
        • 2019-09-28
        • 2018-08-11
        相关资源
        最近更新 更多