【问题标题】:How to change an incorrect datetime format from a raw csv file to a proper datetime format in Python如何在 Python 中将不正确的日期时间格式从原始 csv 文件更改为正确的日期时间格式
【发布时间】:2020-02-11 05:35:54
【问题描述】:

我有一个这样的 Python 数据框

Index Name Dateofbirth

0      A.     12JAN1980:00:00:00.000000
1      B.   17JUN1954:00:00:00.000000
...
1250000  X.  09DEC1957:00:00:00.0000

问题是在原始数据csv文件中,我的日期是以这种格式存储的%d%m%Y:00:00:00.000000

所以,当我将这个 csv 文件读入 Python 并使用以下代码将出生日期列转换为日期时间时,问题就出现了

df['Dateofbirth'] =pd.to_datetime(df['Dateofbirth'])

我收到以下错误:

raise ValueError("未知字符串格式:", timestr) ValueError: ('未知字符串格式:', '12JAN1980:00:00:00.000000

如何将此格式更改为可接受的日期时间格式 %Y%m%d %H%M%S ? 更改原始 csv 文件是不可能的,因为有超过 1000000 行。

请帮忙!对于缺少文本格式,我深表歉意。

【问题讨论】:

  • 不,它存储在 Date first,year end,但是你使用的是%Y%M%D
  • 但我没有指定任何需要 Y 优先格式的地方。无论哪种方式都很好。那我应该如何修改我的代码呢?
  • 您好,可以指定格式,例如:pd.to_datetime('13000101', format='%Y%m%d', errors='ignore'),
  • 但是现在整个列都是一个对象而不是 datetime64[ns]
  • 我想这行不通。因为整列仍然是字符串类型(对象)而不是所需的 datetime64[ns]

标签: python csv dataframe python-datetime


【解决方案1】:

你可以试试这个,它会返回 Dateofbirth 类型为 object:

df['Dateofbirth'] = pd.to_datetime(df.Dateofbirth)
df['Dateofbirth'] = df['Dateofbirth'].dt.strftime('%Y%m%d %H%M%S')

如果您想将Dateofbirth 用作日期时间类型,则使用它:

df['Dateofbirth'] = pd.to_datetime(df['Dateofbirth'])
df['Dateofbirth'] = pd.to_datetime(df['Dateofbirth'].dt.strftime('%Y%m%d %H%M%S'))

【讨论】:

  • 感谢您的帮助,还有问题是因为我一直在写 %m,而这几个月应该是 %b。
  • 哦,是的,我没意识到,抱歉,您说要更改为,但认为您想使用该格式的数据并转换:D
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-29
相关资源
最近更新 更多