从我的研究中,我发现我只能使用apply
格式化Pandas中的字符串,这在大型数据集中非常慢,因为apply
本质上是整个数据的循环。从理论上讲,format
是一个可向量化的函数,因为它不依赖于其他行。因此,有什么方法可以将它矢量化吗?
例如,我的一项工作想要这样做:
joined["timestamp"] = joined.apply(lambda row: args.date + " {:0>2d}:{:0>2d}:00".format(row["tid"]/6, row["tid"]%6*10), axis=1)
其中tid
是一个整数。一些示例数据(joined
):( date="20170101"
)
tid timestamp
1 20170101 00:10:00
10 20170101 01:40:00
我认为通过格式化其他一些列来添加新的字符串列是一种常见的情况。
谢谢!
答案 0 :(得分:2)
我相信您需要str.zfill
并将分区更改为分区(//
):
print (joined)
tid
0 1
1 10
a ='20170101'
b = ' ' + (joined["tid"] // 6).astype(str).str.zfill(2) + ':'
c = (joined["tid"] % 6 * 10).astype(str).str.zfill(2) + ':00'
joined["timestamp"] = a + b + c
print (joined)
tid timestamp
0 1 20170101 00:10:00
1 10 20170101 01:40:00