Pandas中有矢量化的string.format吗?

时间:2018-03-29 11:27:21

标签: python pandas

从我的研究中,我发现我只能使用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

我认为通过格式化其他一些列来添加新的字符串列是一种常见的情况。

谢谢!

1 个答案:

答案 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