Pandas.read_csv 将所有文件读入一列

Posted

技术标签:

【中文标题】Pandas.read_csv 将所有文件读入一列【英文标题】:Pandas.read_csv reads all of the file into one column 【发布时间】:2015-09-04 16:31:50 【问题描述】:

我有一个格式为 "...","...","..."... 的 csv 文件,包含 40 多列。 当我使用这个简单的代码时,它只给了我一个大钥匙。我已经搞砸了一个多小时,我不知道如何使用 pandas 来解决这个问题。

dataframe = pd.read_csv(filePath, header=0, encoding='iso-8859-1')
datakeys = dataframe.keys();
print(datakeys)

【问题讨论】:

如果您可以发布 csv 的前几行将会很有帮助,以及您对 header=0 的意图是什么,这只是意味着第一行是标题,您是否打算 @987654324 @ 表示没有标题,这是你的错误吗? 我只是把标题放在那里向其他人清楚地表明 csv 的第一行是标签。我无法发布具体数据,因为 HIPPA 很烂,但它遵循我发布的格式。用字符串或数字。在标签中,空格由下划线指定,并且没有数字。熊猫不应该..你知道..根据自己的逗号分隔值吗? 可以配置分隔符吗?您假设它是 ',' 但某些工具取决于系统设置或可以配置并使用 ';'默认情况下 @V15I0N 我根据 API 尝试过,但没有运气。 pandas.pydata.org/pandas-docs/stable/generated/… sep 的默认值是 ',',所以它应该可以工作,但除非你发布原始输入数据,否则它现在只是一个猜谜游戏 【参考方案1】:

我通过指定read_csvheader=Nonenames 字段解决了这个问题。

fields = ["colA", "colB"];
df = pd.read_csv("/tmp/data.csv", sep="|", header=None, names=fields)

【讨论】:

【参考方案2】:

由于这些答案没有让我满意,但我找到了另一种方法,我也在这里发布我的解决方案:

所以我使用“§”作为分隔符和pandas-1.1.5。但是,问题与提问者描述的相同(分隔符除外)。我的解决方案是更新熊猫:

pip3 install --upgrade pandas

之后,与

    df = pd.read_csv(input_file_path, sep="§", encoding='utf8', quotechar='"', engine="python")

一切顺利。

【讨论】:

【参考方案3】:

我通过编写脚本重新格式化 .csv 解决了这个问题 .csv 中有一个小的格式问题导致 Panda 基本上什么都不做。奇怪

【讨论】:

【参考方案4】:

这是一个老问题,但由于我最近遇到了同样的问题,我想我发布了为我解决的问题:

问题是错误地设置了sep= 参数。当放置适当的分隔符时(仔细检查您的数据文件是否有正确的分隔符!),它将文件读入正确的列数。

也许它也可以帮助其他人。

【讨论】:

以上是关于Pandas.read_csv 将所有文件读入一列的主要内容,如果未能解决你的问题,请参考以下文章

是否可以将打开的文件传递给pandas read_csv

尾随分隔符使熊猫 read_csv 感到困惑

如何在使用 pandas.read_csv 读取 csv 文件时将 pandas.dataframe 中的元素转换为 np.float?

如何在使用 pandas.read_csv 读取 csv 文件时将 pandas.dataframe 中的元素转换为 np.float?

pandas read_csv,最后一列包含逗号

为 pandas.read_csv 指定正确的 dtypes 以获取日期时间和布尔值