作者Brahms5566 (Brahms)
看板Python
标题[问题] for + if 优化问题
时间Mon Apr 29 03:15:47 2019
想请教各位大大
在python里面要怎麽写出excel以下的功能:
if A2=A1, 则B2=A1+1 , 否则 B2=1
小弟试写for+if如下, 但速度实在太慢, excel在B栏用if函数往下拉只需要5秒,
python却要120秒...
df是dataframe, 有A, B两栏
for i in range(len(df)):
if df['A'][i+1] == df['A'][i]:
df['B'][i+1] = df['A'][i] + 1
else:
df['B'][i+1] = 1
请问要怎麽修改可以速度快一点..
谢谢!
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 223.137.171.226
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1556478949.A.C31.html
1F:推 germun: 改用numpy array, 有需要再转字典 04/29 07:05
2F:推 iphone2003: 题外话,尽量别用chain index的方式取值.. 04/29 12:34
3F:推 iphone2003: 基本上df尽量不要用for去操作,可以使用内建method就 04/29 12:35
4F:→ iphone2003: 用,速度差蛮多的 04/29 12:35
5F:推 nickchen0304: np.where 可以试试 04/29 16:36
6F:推 TitanEric: 因为你用index 要速度差很多 04/29 18:59
7F:→ Brahms5566: 谢谢大家!!努力研究如何避免在df中用for操作.. 04/29 23:51
8F:→ Brahms5566: 速度真的差很多!! 04/29 23:51
9F:推 sma1033: 不只是pandas的dataframe,其实一般能不用for就不用for.. 04/30 01:45
10F:推 jp956956: 不用for 怎麽循环执行?? 05/02 03:04
11F:推 sma1033: 所以我是说「能不用就不用啊」,像有限次的矩阵运算这种 05/02 16:02
12F:→ sma1033: 能够用现成package运算塞满pipe line来提昇效率是最好~ 05/02 16:03