【问题标题】:DataFrame and Python don't find the columns' names of a CSV fileDataFrame 和 Python 找不到 CSV 文件的列名
【发布时间】:2021-09-25 19:48:48
【问题描述】:

我在 Python 中使用 DataFrame 来操作 CSV 文件。所以我使用 df['column_name'] 之类的东西。

但是 df 似乎没有在文件中找到该列(写入“KeyError”),即使确实存在该列,即使我检查了它以查看字母是否有错误。 因此,如果我希望我的程序正常工作,并且我的 CSV 文件可以被 df 和 python 读取,我需要在一切之前手动更改我想要操作的列的名称。 为了解释这种情况,我操作的文件不是来自我,它们是预先生成的,所以如果我不更改列的名称,python 似乎不想读取它,因为更改后一切正常. 我希望你能理解并能帮助我!

【问题讨论】:

  • 你能提供一个你正在阅读的文件的例子和你用来这样做的代码吗?
  • 创建一个 minimal reproducible example 来显示问题。
  • 请提供足够的代码,以便其他人更好地理解或重现问题。

标签: python pandas dataframe csv


【解决方案1】:

您是否检查过文件和代码中的“column_name”是大写还是小写?有时当一个是大写而另一个是小写时会出错。

【讨论】:

  • 是的,我知道这很重要,所以我这样做了,所以名称和变量都可以,我什至直接从文件中复制/粘贴来检查,但它不起作用.
【解决方案2】:

好的,我想通了,但我不知道如何处理它: 如果我复制名为“时间”的列,我会从我想要操作的文件中得到:

(Time
)

我添加括号只是为了表明它紧随其后的行,所以这似乎是原始文件的问题,列名本身具有“输入”字面意思。 因此,例如在代码中:

time = df['Time
']

它会阻止代码工作。 我不知道如何处理它,而且我认为我不能通过在文件中修复列的名称来修复它,因为它是预先生成的。

【讨论】:

  • 如果列名中有一个换行符,time = df['Time\n'] 可能会起作用。
  • 我刚试了一下,还是不行,所以我觉得不是一个换行符。
  • df.columns 返回什么?它应该准确地显示列名是什么,例如Index(['Time\r\n', 'Col2\n', 'Col3 \r ', 'Col4 \n '], dtype='object')
  • 它返回:Index(['No.;Time;Comment;Scramble;Date;P.1'], dtype='object'),(我们正在寻找的列是第二个“时间”),另外,我刚刚测试了其他列是否发生同样的事情,实际上发生。
  • 这是一个很长的列名。数据框未正确加载。需要pd.read_csv(filename,sep=';') 之类的东西以分号分隔。
【解决方案3】:

您检查过空格吗?比如制表符或换行符。

编辑:

现在您知道问题是换行符,并且可能数据框中的其他列也有同样的问题,您可以像这样清理它们

之前:

df = pd.DataFrame([['A',1],
                   ['B',2],
                   ['C',3],
                   ['D',4],
                   ['E',5]], columns=['column 1 \n',' \n column2 \n'])
output:
  column 1 \n   \n column2 \n
0   A                1
1   B                2
2   C                3
3   D                4
4   E                5

之后:

#cleaning the column names

new_columns = [i.strip() for i in df.columns]

df.columns = new_columns

    column 1    column2
0     A           1
1     B           2
2     C           3
3     D           4
4     E           5

【讨论】:

  • 我去看看那些东西,我会告诉你最新情况
  • 希望更新有用
  • 我是否必须更改某些内容,或者只是将其复制/粘贴到程序中?因为在复制/粘贴之后,什么都没有改变,它仍然不起作用。 (另外,抱歉让我久等了,我现在没时间了)
猜你喜欢
  • 2017-05-17
  • 2018-02-03
  • 2021-07-04
  • 1970-01-01
  • 1970-01-01
  • 2018-04-25
  • 2016-02-14
  • 2012-08-19
  • 2021-02-05
相关资源
最近更新 更多