如何在熊猫数据框中使用应用时创建列时间戳?
Posted
技术标签:
【中文标题】如何在熊猫数据框中使用应用时创建列时间戳?【英文标题】:How to create a column timestamp while using apply in a pandas dataframe? 【发布时间】:2019-05-20 02:28:13 【问题描述】:我将一些函数应用于熊猫数据框列:
def foo(x):
return 1 + x
然后,我将函数应用于列:
df['foo'] = df['a_col'].apply(foo)
如何返回一个列,其中包含函数 foo
完成所需的毫秒数?例如:
A time_milisecs
2 0.1
4 0.2
4 0.3
3 0.3
4 0.2
其中A
是包含求和结果的列。
【问题讨论】:
这只是一个例子......显然它是另一个函数我只想创建一个列,其中包含函数完成所需的时间(以毫秒为单位) 这可能有用:***.com/questions/24812253/… 【参考方案1】:您可以使用time
模块。假设您还希望通过计算创建一个新系列,您可以输出一个元组序列,然后转换为数据帧并分配回两个系列。
这是一个演示:
import time
df = pd.DataFrame('A': [2, 4, 4, 3, 4])
def foo(x):
tstart = time.time()
time.sleep(0.25)
tend = time.time()
return 1 + x, (tend-tstart) * 10**3
df[['B', 'B_time']] = pd.DataFrame(df['A'].apply(foo).values.tolist())
print(df)
A B B_time
0 2 3 250.014544
1 4 5 250.014305
2 4 5 250.014305
3 3 4 250.014305
4 4 5 250.014067
在 Python 3.7 中,您可以使用 time.process_time_ns
,它以纳秒为单位测量时间。
【讨论】:
我会选择timeit
,尽管time
似乎是简单的出路。请参阅 ***.com/questions/24812253/…,了解如何对 timeit
进行猴子补丁以一起返回计时和函数结果。
@coldspeed,你相信结果会有所不同吗?我发现timeit
很好,可以多次重复一个过程以获得平均时间。但是对于一次性计算,我看不出有什么区别。在 Python 3.7 中,您还拥有 time.process_time_ns
。
结果会一样,但至少时间会更准确。如果性能很重要(即,如果 OP 不想等待函数运行 30 次),或者如果这是执行 db 调用、io/async/rpc 调用之类的函数之一,那么肯定不合适。当然,对于这样的问题,你永远无法判断:-)
@coldspeed 你能举个例子吗?以上是关于如何在熊猫数据框中使用应用时创建列时间戳?的主要内容,如果未能解决你的问题,请参考以下文章