【问题标题】:pandas to_datetime convert datetime string to 0pandas to_datetime 将日期时间字符串转换为 0
【发布时间】:2019-06-04 10:19:53
【问题描述】:

我在 df 中有一个列,其中包含 datetime 字符串,

inv_date
24/01/2008
15/06/2007 14:55:22
08/06/2007 18:26:12
15/08/2007 14:53:25
15/02/2008
07/03/2007
13/08/2007

我使用pd.to_datetime%d%m%Y 格式将字符串转换为datetime 值;

pd.to_datetime(df.inv_date, errors='coerce', format='%d%m%Y')

我明白了

inv_date
24/01/2008
0
0
0
15/02/2008
07/03/2007
13/08/2007

格式从inv_date 推断为最常见的日期时间格式;我想知道如何不将15/06/2007 14:55:2208/06/2007 18:26:1215/08/2007 14:53:25 转换为 0,而是将15/06/200708/06/200715/08/2007

【问题讨论】:

  • pd.to_datetime(df.inv_date.str[:10], errors='coerce', format='%d/%m/%Y') ..?

标签: python python-3.x pandas datetime


【解决方案1】:

使用常规的pd.to_datetime 调用,然后使用.dt.date

>>> pd.to_datetime(df.inv_date).dt.date
0    2008-01-24
1    2007-06-15
2    2007-08-06
3    2007-08-15
4    2008-02-15
5    2007-07-03
6    2007-08-13
Name: inv_date, dtype: object
>>> 

或者正如@ChrisA所说,你也可以使用,只是熊猫格式已经很好,所以跳过了那部分:

>>> pd.to_datetime(df.inv_date.str[:10], errors='coerce')
0    2008-01-24
1    2007-06-15
2    2007-08-06
3    2007-08-15
4    2008-02-15
5    2007-07-03
6    2007-08-13
Name: inv_date, dtype: object
>>> 

【讨论】:

    【解决方案2】:

    你也可以试试这个:

    df = pd.read_csv('myfile.csv', parse_dates=['inv_date'], dayfirst=True)
    df['inv_date'].dt.strftime('%d/%m/%Y')
    0    24/01/2008
    1    15/06/2007
    2    08/06/2007
    3    15/08/2007
    4    15/02/2008
    5    07/03/2007
    6    13/08/2007
    

    希望这也会有所帮助。

    【讨论】:

      猜你喜欢
      • 2019-06-18
      • 2022-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-17
      • 1970-01-01
      相关资源
      最近更新 更多