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



我的数据框中有此列:

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,但遇到了相同的错误。

有什么想法吗?

提前感谢您的帮助。

给定日期始终为 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:]

最新更新