【问题标题】:pandas Expected 10 fields in line 153, saw 11,how to add one more columnpandas 预计第 153 行有 10 个字段,看到 11,如何再添加一列
【发布时间】:2021-06-23 04:29:49
【问题描述】:

我有一个 info.txt 文件,它看起来像这样:

B 19960331 00100000 00000000000000 00000000000000 00000000000000 00000000 00000000000000 00000000000000 00000000000000
B 19960430 00099100 00000000000000 00000000000000 00000000000000 00000000 00000000000000 00000000000000 00000000000000
B 19960531 00098500 00000000000000 00000000000000 00000000000000 00000000 00000000000000 00000000000000 00000000000000
B 19980331 00107241 00107241000000 00107241000000 00107241000000 00100000 00100000000000 00100000000000 00100000000000    00000100

你可以看出前 3 行有 10 列,但第四行有 11 列,所以当我阅读 thsi 文件时:

import pandas as pd
    import numpy as np
    df =pd.read_csv('C:\Users\Petter\Desktop\info.txt',sep=r"\s+", header=None, dtype=str, engine="python")
    df

我得到这个和一个错误:

    0   1   2   3   4   5   6   7   8   9
0   B   19960331    00100000    00000000000000  00000000000000  00000000000000  00000000    00000000000000  00000000000000  00000000000000
1   B   19960430    00099100    00000000000000  00000000000000  00000000000000  00000000    00000000000000  00000000000000  00000000000000
2   B   19960531    00098500    00000000000000  00000000000000  00000000000000  00000000    00000000000000  00000000000000  00000000000000

Skipping line 4: Expected 10 fields in line 4, saw 11. Error could possibly be due to quotes being ignored when a multi-char delimiter is used.

理想情况下,它应该自动向 df 添加一列。输出应如下所示:

    0   1   2   3   4   5   6   7   8   9  10
0   B   19960331    00100000    00000000000000  00000000000000  00000000000000  00000000    00000000000000  00000000000000  00000000000000
1   B   19960430    00099100    00000000000000  00000000000000  00000000000000  00000000    00000000000000  00000000000000  00000000000000
2   B   19960531    00098500    00000000000000  00000000000000  00000000000000  00000000    00000000000000  00000000000000  00000000000000

我试过了:

df = pd.DataFrame(pd.np.empty((0, 11))) 

但它不起作用。

【问题讨论】:

    标签: python pandas dataframe numpy


    【解决方案1】:

    这可行,可能适合您的需求:

    df = pd.read_csv(... names=range(11))
    

    【讨论】:

    【解决方案2】:

    您可以使用 error_bad_lines 参数来避免此错误。

    import pandas as pd
    import numpy as np
    df = pd.read_csv("C:\Users\Petter\Desktop\info.txt", header=None, delimiter=r"\s+", error_bad_lines=False)
    df
    

    【讨论】:

    • 我已经这样做了,这会让我跳过错误行,但我仍然需要它。
    • 好吧,如果您需要该行,那么您需要特别提及使用范围读取的列数。
    • 嗨@Raja朋友,你能帮我解决这个问题吗stackoverflow.com/questions/68309137/…
    猜你喜欢
    • 1970-01-01
    • 2020-04-12
    • 2017-10-09
    • 1970-01-01
    • 1970-01-01
    • 2018-05-10
    • 2018-03-14
    • 2020-03-30
    • 2020-11-02
    相关资源
    最近更新 更多