【问题标题】:Dataframe datetime switching month into days数据框日期时间将月份转换为天
【发布时间】:2021-03-15 19:33:09
【问题描述】:

我正在尝试将日/月/年小时:分钟列转换为日和月。当我运行我的代码时,转换会将月份转换为天,将天转换为月份。

您可以在此处找到我想要切换到日/月的一列的数据框副本 https://file.io/JkWl7fsBN0vl

下面是我用来转换的代码:

    df =pd.read_csv('Example.csv')
    df['DateTime'] = pd.to_datetime(df['DateTime'])
    df.to_csv("output.csv", index=False)

【问题讨论】:

  • 您上传的文件不存在。更新您的问题。
  • 你需要格式化成字符串,看看strftime
  • 很抱歉,链接似乎已过期。以下是更新的链接:filebin.net/wwo092r8cmm973w2

标签: python dataframe datetime


【解决方案1】:

在不知道您使用的确切日期时间格式的情况下(指向数据框的链接已损坏),我将使用一个示例

日/月/年时:分

2014 年 5 月 9 日 12:30

您可以使用this site 确定确切的格式日期代码

本质上,to_datetime() 有一个格式参数,当它不是很明显时,您可以在其中传递特定格式。这将让您指定月份 -> 日、日 -> 月份令人困惑的内容实际上是相反的。

>>> df = pd.DataFrame(['05/09/2014 12:30'],columns=['DateTime'])
      DateTime
0     05/09/2014 12:30

>>> df['DateTime'] = pd.to_datetime(df['DateTime'], format='%d/%m/%Y %H:%M')
      DateTime
0     2014-09-05 12:30:00


>>> df['day'] = df['DateTime'].dt.day
>>> df['month'] = df['DateTime'].dt.month
      DateTime                day       month
0     2014-09-05 12:30:00     5         9


>>> df['DD/MM'] = df['DateTime'].dt.strftime('%d/%m')
      DateTime                day       month     DD/MM
0     2014-09-05 12:30:00     5         9         05/09

我不确定您想要的日期和月份的确切格式(单独的列,组合),但我提供了一些示例,因此您可以在完成后删除 DateTime 列并使用一个你需要的。

【讨论】:

  • 我正在阅读您的评论,谢谢。我还在这里更新了链接:filebin.net/wwo092r8cmm973w2
  • 我还将我的代码更改为以下以考虑秒和 AM/PM df =pd.read_csv('Example.csv') df['DateTime'] = pd.to_datetime(df ['DateTime'],format='%d/%m/%Y %H:%M:%S %p') df.to_csv("output.csv", index=False) 但是当我运行代码
  • 您遇到的错误是什么?根据您添加的新链接,您似乎有两位数的年份,没有秒数据,也没有 AM/PM 数据,因此无需包含这些数据。使用格式是 datetime 应该期望的信号,实际上并不存在。我建议尝试 %d/%m/%y %H:%M 作为参数,因为这就是数据的实际格式。
猜你喜欢
  • 2017-06-02
  • 2014-03-25
  • 2021-07-04
  • 1970-01-01
  • 2018-10-15
  • 1970-01-01
  • 1970-01-01
  • 2023-03-25
  • 1970-01-01
相关资源
最近更新 更多