【问题标题】:Save skip rows in pandas read csv在熊猫读取csv中保存跳过行
【发布时间】:2018-11-09 19:25:03
【问题描述】:

我有一个 skip rows 列表(比如 [1,5,10] --> 行号),当我将它传递给 pandas read_csv 时,它会忽略那些行。但是,我需要将这些跳过的行保存在不同的文本文件中。

我浏览了 pandas read_csv 文档和其他几篇文章,但不知道如何将其保存到文本文件中。

例子:

输入文件:

a,b,c
# Some Junk to Skip 1
4,5,6
# Some junk to skip 2
9,20,9
2,3,4
5,6,7

代码:

skiprows = [1,3]
df = pandas.read_csv(file, skip_rows = skiprows)

现在输出.txt:

# Some junk to skip 1
# Some junk to skip 2

提前致谢!

【问题讨论】:

  • 行是 cmets 还是会扰乱 csv 文件的读取?
  • @ScottBoston,是的,它按预期工作,但我需要这个跳过行存储在另一个文件中

标签: python python-3.x pandas numpy dataframe


【解决方案1】:
def write_skiprows(infile, skiprows, outfile='skiprows.csv')
    maxrow = max(skiprows)
    with open(infile, 'r') as f, open(outfile, 'w') as o:
        for i, line in enumerate(f):
            if i in skiprows:
                o.write(line)
            if i == maxrow:
                return

【讨论】:

    【解决方案2】:

    试试这个,

    df=pd.read_csv('input.csv')
    skiprows=[1,3,6]
    df,df_skiprow=df.drop(skiprows),df.iloc[skiprows]
    #df_skiprow.to_csv('skiprows.csv',index=False)
    

    输入:

        a    b
    0   1   c1
    1   2   c2
    2   3   c3
    3   4   c4
    4   5   c5
    5   6   c6
    6   7   c7
    7   8   c8
    8   9   c9
    9  10  c10
    

    输出: df

        a    b
    0   1   c1
    2   3   c3
    4   5   c5
    5   6   c6
    7   8   c8
    8   9   c9
    9  10  c10
    

    df_skiprow

       a   b
    1  2  c2
    3  4  c4
    6  7  c7
    

    解释:

    1. 读取整个文件。
    2. 按 df 和 skiprow 分割文件
    3. 转换成单独的 csv 文件。

    【讨论】:

      猜你喜欢
      • 2015-07-26
      • 2015-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-16
      • 2018-07-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多