如何去除Timestamp列表中的微秒并转为字符串?报错求助
问题原因
你触发TypeError: 'list' object is not callable的核心原因是调用map时写错了函数名——你定义的处理函数是ts1,但你写了times;如果之前有同名的列表变量,就会出现“列表对象不可调用”的错误。
解决方案
下面提供几种可行的实现方式,都能得到你想要的结果:
方案1:修正你的原代码
直接把函数名改对即可:
import pandas as pd from datetime import datetime ab = pd.date_range(start='2018-04-24', end='2018-04-27', periods=50) ab = ab[:5].tolist() def ts1(times): return times.strftime("%Y-%m-%d %H:%M:%S") # 把times改成ts1 result = list(map(ts1, ab)) print(result)
方案2:用lambda简化写法
不用单独定义函数,一行搞定:
result = list(map(lambda x: x.strftime("%Y-%m-%d %H:%M:%S"), ab))
方案3:Pandas原生批量处理(更高效)
如果还没把DatetimeIndex转成列表,直接用Pandas的strftime批量处理后转列表:
ab = pd.date_range(start='2018-04-24', end='2018-04-27', periods=50)[:5] result = ab.strftime("%Y-%m-%d %H:%M:%S").tolist()
方案4:先截断微秒再转字符串
如果想先去除Timestamp的微秒属性再转字符串,可以这么写:
result = [str(x.replace(microsecond=0)) for x in ab]
以上所有方案的输出结果都是:
['2018-04-24 00:00:00', '2018-04-24 01:28:09', '2018-04-24 02:56:19', '2018-04-24 04:24:29', '2018-04-24 05:52:39']
内容的提问来源于stack exchange,提问作者adss4
相关产品推荐
相关产品推荐

