【问题标题】:Column names are not recognized? How to set the column names?无法识别列名?如何设置列名?
【发布时间】:2022-01-27 05:13:09
【问题描述】:

我有一个无法调用列的数据集。在下面的屏幕截图中,我用黄色标记了我需要被识别为列(Vale On、Petroleo 等)和日期列,因为我正在处理时间序列数据,所以我需要将其识别为日期。

我尝试重置索引和一些相关的解决方案,但没有任何效果。我是 Python 新手,如果太明显,我很抱歉。

【问题讨论】:

  • 您的列名是 0、1、2...标题被错误地设置为您的数据的第一行。
  • 看起来您的数据框的第一行包含列标签。试试df.columns = df.iloc[0, :]
  • 你是如何创建数据框的? pd.read_csv() 通常会使用文件的第一行作为列名。
  • 感谢您的评论。我已导入 Excel 格式的数据,但在此之前,我对导入的数据集进行了一些修改(例如转置)。我已经使用代码“df.columns = df.iloc[0, :]”来设置列名并且它有效。现在我只需要将“日期”列更改为“日期时间”类型,这是行不通的。我正在尝试“ df1 = df1[pd.to_datetime(df1["Date"])] ”,但它返回“ ParserError: Unknown string format: Date” 。有什么想法吗?
  • 我已经解决了这样的问题:首先我再次导入了我的主数据框,在删除了一些行之后,我应用了命令“df["Date"] = df["Date"]。 dt.strftime('%Y-%m-%d') ".在转置数据帧并转回后,我意识到 df 又是另一种格式,所以我使用上面的相同命令再次获取 datetype。一切正常。谢谢大家

标签: python pandas time-series


【解决方案1】:
# use first row as column names
df.columns = df.iloc[0]

# and then drop it
df = df.iloc[1:]

# convert first col to date
# if it doesnt work, try passing format=... refer https://strftime.org/
# also https://pandas.pydata.org/docs/reference/api/pandas.to_datetime.html
df['Date'] = pd.to_datetime(df['Date'])

如果解析日期一直失败,则调试提示是检查您的日期字符串是否一致,可能像这样:df['Date'].str.len().value_counts()。那应该希望只返回一个长度。如果返回多行,则意味着您必须清理不一致和异常的数据。

【讨论】:

  • 我无法将第一列转换为日期:ParserError:未知字符串格式:日期。我的日期看起来像 "1980-01-01T00:00:00.000Z" 。我不知道这个“Z”是怎么出现的。最初我有一个数据框,其中日期为“日期时间”类型,但我需要转置数据框并自动将所有列变为“对象类型”。我认为错误可能与此有关。
  • 其中一行的日期可能有问题,您确定数据是完美的吗?
  • 检查有问题的日期的一种方法是尝试在解析之前验证您是否仅获得df['Date'].str.len().value_counts() 的一个长度——这将告诉您所有日期字符串是否一致或是否存在特定的用错误/异常数据搞砸的行
  • 我不确定日期是否正确,因为它是一个非常庞大的数据集。执行上面的代码我得到“ 4.0 1 Name: Date, dtype: int64”
  • 4.0 1 表示您可能只检查了第一行?你的日期格式是什么?
猜你喜欢
  • 2021-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-04
相关资源
最近更新 更多