大家好,我们将为您提供帮助。我正在分析具有以下日期格式的一系列(一组列):
'1060208'
前三个数字表示年份,其中第一个数字“ 1”用于比较。在上述情况下,年份为2006。第4位和第5位数字代表月份,其余数字代表日期。我想将这些日期转换成这样
106-02-08
以便我可以使用 .groupby 每月或每年进行排序。到目前为止,这是我的代码
class Data:
def convertdate(self):
self.dates.apply(lambda x:x[0:3] + '-' + x[3:5] + '-' + x [5:7])
return self.dates
运行此命令时,出现错误:
TypeError: 'int' object is not subscriptable
能否请您告诉我出了什么问题?还是可以建议其他方法来做到这一点?非常感谢。
答案 0 :(得分:1)
假设date是一个int列表,则可以执行以下操作:
input_dates = [1060208, 1060209]
input_dates_to_str = map(lambda x: str(x), input_dates)
output = list(map(lambda x: '-'.join([x[0:3], x[3:5], x[5:]]), input_dates_to_str))
无论如何,在处理日期时,建议您使用datetime
软件包。
答案 1 :(得分:0)
您的问题的快速答案:1060208是一个整数,整数不能下标,因此您需要将其更改为字符串。
其他一些想法: 您的数据在哪里?这一切都在熊猫数据框中吗?如果是这样,为什么还要编写类来转换数据?有更好/更快的方法。像将整数日期转换为字符串一样,去掉第一位数字,然后将其转换为日期时间。
“在1处放置用于比较的目的”是什么意思?可以这样记录,但显然日期和标志(我认为是某种标志)不应在同一字段中表示。那么,为什么不将1放在自己的字段中呢?