当前位置: 首页 > 面试题库 >

防止熊猫read_csv将第一行视为列名的标题

东方俊杰
2023-03-14
问题内容

我读的pandas DataFrame使用pd.read_csv。我想保留第一行作为数据,但是它一直在转换为列名。

  • 我试过了,header=False但这只是完全删除了它。

(请注意输入数据:我有一个字符串(st = '\n'.join(lst)),我将其转换为类似文件的对象(io.StringIO(st)),然后csv从该文件对象进行构建。)


问题答案:

您希望header=NoneFalsegets类型提升int0查看文档重点类别:

header:int或int列表,默认“ infer”行号(用作列名)以及数据的开头。如果未传递任何名称,则默认行为就像设置为0,否则设置为
None 。显式传递header =
0以便能够替换现有名称。标头可以是整数列表,这些整数指定列中多个索引的行位置,例如[0,1,3]。未指定的中间行将被跳过(例如,在此示例中为2)。请注意,如果skip_blank_lines
= True,则此参数将忽略注释行和空行,因此header = 0表示数据的第一行,而不是文件的第一行。


首先,您可以看到行为上的差异header=0

In [95]:
import io
import pandas as pd
t="""a,b,c
0,1,2
3,4,5"""
pd.read_csv(io.StringIO(t), header=0)

Out[95]:
   a  b  c
0  0  1  2
1  3  4  5

现在None

In [96]:
pd.read_csv(io.StringIO(t), header=None)

Out[96]:
   0  1  2
0  a  b  c
1  0  1  2
2  3  4  5

请注意,在最新版本中0.19.1,这将引发TypeError

In [98]:
pd.read_csv(io.StringIO(t), header=False)

TypeError:将布尔值传递给标头无效。使用header = None表示没有标题,或者使用header =
int或类似int的列表来指定组成列名称的行



 类似资料:
  • 我正在尝试将列中的值透视到列标题,但保留其余数据。这是我的完整代码,以及我能得到的最接近我正在寻找的内容。唯一的问题是我无法弄清楚如何保留列: 原始数据帧: 我最近的支点尝试: 电流输出: 期望输出: 这个和这个我都试过了,没有成功。 任何帮助都将不胜感激。

  • 我正在读取一个包含多个datetime列的csv文件。我需要在读取文件时设置数据类型,但datetimes似乎是个问题。例如: 运行时出现错误: 不理解数据类型"datetime" 通过pandas在事实之后转换列。to_datetime()不是一个选项,我不知道哪些列将成为datetime对象。这些信息可以更改,并且来自于通知我的数据类型列表的任何信息。 或者,我尝试用numpy.genfrom

  • 我的json结构如下: 当我使用规范化这个数据结构时,我得到了一个数据帧,每个数据项都有1行和重复的列标题。如何使重复的列显示为行而不是列? 我现在得到这个 我想要的是:

  • 我有很多csv文件,我想用Pandas(pd.read_csv)读取,但是,在一些文件的中间添加了一个没有标题的列,如以下示例: 如果使用pd.read_csv(example_file),将引发以下错误"ParserError:错误标记化数据。C错误:预期第4行中有2个字段,锯3" 我希望避免跳过这一行,而只是添加一个伪标题名,如Unknown1,并得到以下结果:

  • 问题内容: 我将Python 3.4与IPython结合使用,并具有以下代码。我无法从给定的URL读取csv文件: 我有以下错误 “预期的文件路径名或类似文件的对象,得到了类型” 我怎样才能解决这个问题? 问题答案: 更新资料 现在,您可以从熊猫直接传递URL。 正如错误所暗示的,需要一个类似文件的对象作为第一个参数。 如果要从字符串读取csv,可以使用(Python 3.x)或(Python 2

  • 请考虑下表:对于每个代码,每一个状态都有一些值。 现在我想以这样的方式转置表,使成为列: 我不能让它工作,只转置那个特定的列。 在熊猫身上实现这一目标的好办法是什么?