熊猫-从日期中获取两位数的年份

时间:2020-06-02 10:44:35

标签: python-3.x pandas datetime

我在pandas DataFrame中有一个date列,该列显示了未来合约到期的日期。我需要使用该信息来创建一个新列,并使用我的反向测试器接受的名称。我需要的格式是:

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...

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

1 个答案:

答案 0 :(得分: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')