【问题标题】:Convert datetime format 2020-09-16 00:00:00 to 20200916 in panda dataframe在熊猫数据框中将日期时间格式 2020-09-16 00:00:00 转换为 20200916
【发布时间】:2020-09-27 06:46:23
【问题描述】:

我在下面的python中有熊猫数据框。

full_name  serial  Date_YMD                  prc1     prc2    volume
 bottle_a  AX80    2020-09-22 00:00:00   12874.50  12927.75   61023.0 
 bottle_a  AX80    2020-09-23 00:00:00   12878.50  12926.75   61023.0
 bottle_a  AX80    2020-09-24 00:00:00   12872.50  12928.75   61023.0

我想将Date_YMD 列中的日期格式值转换为转换后的样子;

full_name  serial  Date_YMD        prc1     prc2    volume
 bottle_a  AX80    20200922    12874.50  12927.75   61023.0 
 bottle_a  AX80    20200923    12878.50  12926.75   61023.0
 bottle_a  AX80    20200924    12872.50  12928.75   61023.0

我正在使用 python 3.8

【问题讨论】:

    标签: python python-3.x pandas dataframe datetime


    【解决方案1】:

    您需要先将Date_YMD 列转换为pandas datetime 列:

    In [731]: df.Date_YMD = pd.to_datetime(df.Date_YMD)
    

    然后您可以像这样使用strftime 方法格式化日期时间列:

    In [735]: df.Date_YMD = df.Date_YMD.dt.strftime('%Y%m%d')
    
    In [736]: df
    Out[736]: 
      full_name serial  Date_YMD     prc1      prc2   volume
    0  bottle_a   AX80  20200922  12874.5  12927.75  61023.0
    1  bottle_a   AX80  20200923  12878.5  12926.75  61023.0
    2  bottle_a   AX80  20200924  12872.5  12928.75  61023.0
    

    【讨论】:

      【解决方案2】:

      假设您的 Date_YMD 列是日期时间对象,如果不将其转换为 pd.to_datetime.

      这样就可以完成这项工作,但它将日期时间对象转换为字符串。

      df['Date_YMD'] = (df['Date_YMD'].dt.date).apply(lambda x: x.strftime("%Y%m%d"))
      

      【讨论】:

      • 尽可能避免使用apply,这有点慢。
      • apply 本质上增加了另一个循环 - 然而,什么是 slow 什么不是取决于用例。在这里,strftime 本身很可能是瓶颈,而不是在应用的 lambda 函数中调用它。我反对使用 apply/lambda 的论点是可读性 - 使用 dt 访问器对我来说似乎更清楚。
      猜你喜欢
      • 2021-03-25
      • 2021-07-10
      • 1970-01-01
      • 1970-01-01
      • 2014-02-19
      • 2018-03-23
      • 1970-01-01
      • 2011-05-09
      • 1970-01-01
      相关资源
      最近更新 更多