使用大表循环的python性能问题

标签 python python-3.x pandas chained-assignment

我正在使用 python 和多个库(如 pandas 和 scipy)来准备数据,以便我可以开始更深入的分析。出于准备目的,我正在创建具有两个日期差异的新列。
我的代码提供了预期的结果,但速度非常慢,所以我不能将它用于具有 80K 行的表。运行时间大约需要。仅仅为了这个简单的操作,80分钟的表。

问题肯定和我的写操作有关:

tableContent[6]['p_test_Duration'].iloc[x] = difference

而且 python 提供了一个警告:

enter image description here

日期差异的完整代码示例:

import time
from datetime import date, datetime

tableContent[6]['p_test_Duration'] = 0

#for x in range (0,len(tableContent[6]['p_test_Duration'])):
for x in range (0,1000):
    p_test_ZEIT_ANFANG = datetime.strptime(tableContent[6]['p_test_ZEIT_ANFANG'].iloc[x], '%Y-%m-%d %H:%M:%S')
    p_test_ZEIT_ENDE = datetime.strptime(tableContent[6]['p_test_ZEIT_ENDE'].iloc[x], '%Y-%m-%d %H:%M:%S')
    difference = p_test_ZEIT_ENDE - p_test_ZEIT_ANFANG

    tableContent[6]['p_test_Duration'].iloc[x] = difference

正确结果表:

---

最佳答案

去除循环,将函数应用于整个系列。

ZEIT_ANFANG = tableContent[6]['p_test_ZEIT_ANFANG'].apply(lambda x: datetime.strptime(x, '%Y-%m-%d %H:%M:%S'))
ZEIT_ENDE = tableContent[6]['p_test_ZEIT_ENDE'].apply(lambda x: datetime.strptime(x, '%Y-%m-%d %H:%M:%S'))
tableContent[6]['p_test_Duration'] = ZEIT_ENDE - ZEIT_ANFANG

关于使用大表循环的python性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45057978/

相关文章:

python - 将嵌套列表转换为 pd Dataframe 的快速且 Pythonic 的方法

python - 在 pandas df 中提取带有包含空格的子字符串的行

python - 'Index' 对象没有属性 'tz_localize'

python - 我应该也固定开发要求,还是只固定安装要求?

python - 为什么 asyncio.Future 与 concurrent.futures.Future 不兼容?

python - 当大于 x 时将数据帧中的值替换为 nan?

python - 获取关系之间的差异

python - 游戏 : Snake game How to make making snake go throught walls or creating a fram around the edge?

python - WLST - 节点管理器命令 : "nmStart" can it start many weblogic servers at the same time?

python - 使用 Python 对 sin(x) 进行插值