【问题标题】:Error in loading a csv with pandas which is space separated用空格分隔的熊猫加载 csv 时出错
【发布时间】:2016-11-03 01:12:04
【问题描述】:

我有一个 csv 文件,我称之为 test.csv。它由 分隔。为了检查它的正确性,我将awk 'NR==**' test.csv | wc -w 用于不同的 ** 值,并确保它具有预期的 2595 列。

它有一个标题行。我使用以下代码将 csv 加载为 numpy 数组:

 a = np.genfromtxt("test.csv", skip_header=1, delimiter=' ')
 a.shape
(3367, 2595)

它正确加载了包含 2595 列的文件。

当我使用以下代码用 pandas 加载它时,它加载了列数错误的文件。

test = pd.read_csv("test.csv", sep=' ')
test.shape
(3367, 2539)

然后我使用delim_whitespace=True 而不是sep=' ',它仍然给出了相同的结果。

最后,我使用了index_col=False,它抛出了一个IndexError: list index out of range

这是熊猫中的错误还是我做错了什么?我正在使用版本0.19.0

【问题讨论】:

    标签: python csv pandas numpy


    【解决方案1】:

    没有看到文字很难说,但我猜它与标题行有关。

    试试:

    df = pd.read_csv("text.csv", sep=" ", skiprows=1)
    df.shape
    

    【讨论】:

    • test = pd.read_csv("../experiments/2500_ig_docfreq_5threshold/test.csv", sep=' ', skiprows=1, header=None, index_col=None) 这行得通。谢谢。我很确定名称的标题行中没有空格。我应该通过在某处上传文件来共享文件的标题行还是几行?
    • 问题是 Pandas 是从它解析的第一行开始计算 DataFrame 应该是什么样子,所以如果 header 没有空格,并且解析器认为它是一个数据行,它会认为DataFrame 应该只有一列。如果它真的有 2595 列,那么它可能太大了,无法在这里分享。如果您可以将标题和几行上传到其他地方,那将有所帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-19
    • 1970-01-01
    • 2013-07-30
    • 1970-01-01
    • 2016-08-14
    • 2014-11-17
    • 1970-01-01
    相关资源
    最近更新 更多