是我太菜了,还是 pandans 就是这么慢

查看 189|回复 22
作者:jianghu52   
thinkpad T14 的机器,i7 的 cup ,32G 内存。
我有两个 excel ,一个 4 千行,6 列 名字叫 tb4k ,一个 6 千行,10 列,名字叫 tb6k 。
都用 pandas 接成 df 对象,然后循环两个 df 。最后保存成 excel 。
伪代码
遍历 tb4k 的每一行,取前三列的内容:
遍历 tb6k:
tb6k 的前三列一致:
将 tb6k 的后面第 5,8,10 行的内容赋值给 tb4k 的后三列
停止遍历 tb6k
保存 tb4k 到原 excel
我执行段代码。tb4k 遍历每一行大概需要 1s 左右(包含 tb6k 的遍历)。导致我运行这段程序要接近 1 小时。
这速度也太慢了吧。还是我水平太菜了,没有用好 pandas ?
shinonome   
4 千还是 4 千万呢,感觉你这数据量基本上是几秒就结束的吧,
我还是怀疑代码问题
Python 虽然慢,那也是相对而言的,对人来说应该是没有明显感知的
yagamil   
太菜。鉴定完毕。
xgdgsc   
按行循环应该考虑用 julia , io 可以调 python 完成 https://github.com/JuliaPy/PythonCall.jl ,数据处理部分用 julia 无脑循环
jayeli   
为什么不 merge 呢?
Lycnir   
可以把代码发出来瞧瞧~
wang93wei   
换成 polars 再试试,如果 polars 也慢说明你代码写的有问题。
hackhu2019   
df 对象每次迭代生成的对象开销很大,多半是你迭代的方法不对可以看看这个 https://stackoverflow.com/questions/16476924/how-can-i-iterate-over-rows-in-a-pandas-dataframe
l1xnan   
哪怕自己调 Excel 包写循环也不会这么慢吧,想起来那些 Python 新手声称遇到 Python BUG 在网上提问的
yy77   
Excel 的处理本来就是比较慢的。如果格式不重要的话,转成 csv 再用 pandas 处理,速度能上一个数量级。
您需要登录后才可以回帖 登录 | 立即注册

返回顶部