我在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...
您的帮助将不胜感激,如果需要共享其他信息,请告诉我。
答案 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')