将 float64 列转换为日期时间熊猫

新手上路,请多包涵

我有以下 pandas DataFramedfA['TradeDate']

 0     20100329.0
1     20100328.0
2     20100329.0
...

我希望将其转换为日期时间。

基于 SO 的另一个步骤,我首先将其转换为字符串,然后应用 strptime 函数。

 dfA['TradeDate'] = datetime.datetime.strptime( dfA['TradeDate'].astype('int').to_string() ,'%Y%m%d')

但是,这会返回我的格式不正确的错误( ValueError )。

我发现的一个问题是该列不适用于字符串,而是对象。

当我尝试时:

 dfA['TradeDate'] = datetime.datetime.strptime( dfA['TradeDate'].astype(int).astype(str),'%Y%m%d')

它返回:必须是 Str 而不是 Series。

原文由 JohnAndrews 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 930
2 个回答

您可以使用:

 df['TradeDate'] = pd.to_datetime(df['TradeDate'], format='%Y%m%d.0')
print (df)
   TradeDate
0 2010-03-29
1 2010-03-28
2 2010-03-29

但是,如果一些错误的值,添加 errors='coerce' 将它们替换为 NaT

 print (df)
    TradeDate
0  20100329.0
1  20100328.0
2  20100329.0
3  20153030.0
4         yyy

df['TradeDate'] = pd.to_datetime(df['TradeDate'], format='%Y%m%d.0', errors='coerce')
print (df)
   TradeDate
0 2010-03-29
1 2010-03-28
2 2010-03-29
3        NaT
4        NaT

原文由 jezrael 发布,翻译遵循 CC BY-SA 3.0 许可协议

您可以将 to_datetime 与值的字符串表示形式的自定义格式一起使用:

 import pandas as pd
pd.to_datetime(pd.Series([20100329.0, 20100328.0, 20100329.0]).astype(str), format='%Y%m%d.0')

原文由 languitar 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题