【问题标题】:Pandas - Get two digit year out of a datePandas - 从日期中获取两位数的年份
【发布时间】:2020-06-02 10:44:35
【问题描述】:

我在 pandas DataFrame 中有一个日期列,它显示了未来合同到期的日期。我需要使用该信息来创建一个新列,其名称是我的回测人员接受的。我需要的格式是:

metadata['backtester_name'] = 'NF' + month_code + 2_digit_year

我知道如何获取month_code,我需要帮助来弄清楚如何获取本专栏的2_digit_year。

这是过期列的样子,默认情况下它被格式化为一个对象:

expiry
2009-01-29
2010-01-28
2011-01-27

这是我正在玩弄的公式:

metadata['backtesting_name'] = 'NF' + pd.DatetimeIndex(metadata['expiry']).month.map(month_code) + str(pd.to_datetime(metadata['expiry']))[2:]

我的问题是年份没有被正确捕获,它返回了某种系列:

backtesting_name
0    NFF0     2009-01-29\n1     2010-01-28\n2     2...
1    NFF0     2009-01-29\n1     2010-01-28\n2     2...
2    NFF0     2009-01-29\n1     2010-01-28\n2     2...
3    NFF0     2009-01-29\n1     2010-01-28\n2     2...
4    NFF0     2009-01-29\n1     2010-01-28\n2     2...

您的帮助将不胜感激,如果我需要分享任何其他信息,请告诉我。

【问题讨论】:

    标签: python-3.x pandas datetime


    【解决方案1】:

    Series.dt.strftime%y 一起用于YY 格式,也可以为日期时间系列创建辅助变量并重用它:

    dates = pd.to_datetime(metadata['expiry'])
    metadata['backtesting_name'] = 'NF' + dates.month.map(month_code) + dates.dt.strftime('%y')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-09
      • 1970-01-01
      • 2017-01-19
      • 1970-01-01
      相关资源
      最近更新 更多