将三位数和四位数整数转换为日期

时间:2019-09-06 19:10:02

标签: python date datetime

我的数据框中有此列:

date
1026
1115
125
314

我想将它们转换为日期。月份从10月到4月(涵盖NBA赛季)不等,因此10月,11月和12月将与1月,2月,3月和4月的年份不同。

首先,我尝试将其从int转换为str,然后运行此for循环以插入/并计划在下一步骤中添加年份。

for i in range(0,len(nba_lines.index)):
    nba_lines.loc[i,'Date'] = nba_lines.loc[i,'Date'][:2] + '/' + nba_lines.loc[i,'Date'][2:]

它对于1026到10/26的四位数数字效果很好,但三位数的/却在错误的314到31/4处出现了

然后我尝试根据字符串的长度来做if

    if len(nba_lines[i,'Date']) == 3:
        nba_lines.loc[i,'Date'] = nba_lines.loc[i,'Date'][:1] + '/' + nba_lines.loc[i,'Date'][1:]
    else:
        nba_lines.loc[i,'Date'] = nba_lines.loc[i,'Date'][:2] + '/' + nba_lines.loc[i,'Date'][2:]

但是返回KeyError: (0, 'Date')。我尝试从loc更改为iloc,但遇到相同的错误。

有什么想法吗?

预先感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

鉴于信息始终是2位数字,而月份则是1位或2位数字-第一个代码段可以使用负索引按预期工作

for i in range(0,len(nba_lines.index)):
    nba_lines.loc[i,'Date'] = nba_lines.loc[i,'Date'][:-2] + '/' + nba_lines.loc[i,'Date'][-2:]