我的数据框中有此列:
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
,但遇到相同的错误。
有什么想法吗?
预先感谢您的帮助。
答案 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:]