【问题标题】:Converting year, month and day to datetime将年、月、日转换为日期时间
【发布时间】:2017-03-25 08:57:33
【问题描述】:

我知道了。数据框:

     YEAR   MO   DY  name_col 
0  2016.0  1.0  5.0     0.00 
1  2016.0  1.0  6.0     0.00 
2  2016.0  1.0  7.0     0.41 
3  2016.0  1.0  8.0     0.53 
4  2016.0  1.0  9.0     2.12 

如何将分别代表年、月和日的 YEAR、MO 和 DY 列转换为日期时间?

     YEAR   MO   DY  name_col   datetime
0  2016.0  1.0  5.0     0.00 2016-01-05
1  2016.0  1.0  6.0     0.00 2016-01-06
2  2016.0  1.0  7.0     0.41 2016-01-07
3  2016.0  1.0  8.0     0.53 2016-01-08
4  2016.0  1.0  9.0     2.12 2016-01-09

我试过这个:

pd.to_datetime(df_met['YEAR'].astype(int), format='%Y') + pd.to_timedelta(df_met['DY'] - 1, unit='d')

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    pd.to_datetime() 如果列具有“正确”名称,则可以从多列组合日期时间:

    In [106]: df
    Out[106]:
         YEAR   MO   DY  name_col
    0  2016.0  1.0  5.0      0.00
    1  2016.0  1.0  6.0      0.00
    2  2016.0  1.0  7.0      0.41
    3  2016.0  1.0  8.0      0.53
    4  2016.0  1.0  9.0      2.12
    
    In [107]: df['datetime'] = pd.to_datetime(df.rename(columns={'MO':'MONTH', 'DY':'DAY'}).drop('name_col', 1))
    
    In [108]: df
    Out[108]:
         YEAR   MO   DY  name_col   datetime
    0  2016.0  1.0  5.0      0.00 2016-01-05
    1  2016.0  1.0  6.0      0.00 2016-01-06
    2  2016.0  1.0  7.0      0.41 2016-01-07
    3  2016.0  1.0  8.0      0.53 2016-01-08
    4  2016.0  1.0  9.0      2.12 2016-01-09
    

    来自docs

    从 DataFrame 的多列中组装日期时间。按键 可以是常见的缩写,如

    [‘year’, ‘month’, ‘day’, ‘minute’, ‘second’, ‘ms’, ‘us’, ‘ns’]

    或相同的复数

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多