[问题] for + if 优化问题

楼主: Brahms5566 (Brahms)   2019-04-29 03:15:47
想请教各位大大
在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
请问要怎么修改可以速度快一点..
谢谢!
作者: germun (ger)   2019-04-29 07:05:00
改用numpy array, 有需要再转字典
作者: iphone2003 (307)   2019-04-29 12:34:00
题外话,尽量别用chain index的方式取值..基本上df尽量不要用for去操作,可以使用内建method就用,速度差蛮多的
作者: nickchen0304 (CYCNC35)   2019-04-29 16:36:00
np.where 可以试试
作者: TitanEric (泰坦)   2019-04-29 18:59:00
因为你用index 要速度差很多
楼主: Brahms5566 (Brahms)   2019-04-29 23:51:00
谢谢大家!!努力研究如何避免在df中用for操作..速度真的差很多!!
作者: sma1033 (死马)   2019-04-30 01:45:00
不只是pandas的dataframe,其实一般能不用for就不用for..
作者: jp956956 (储备里长伯)   2019-05-02 03:04:00
不用for 怎么循环执行??
作者: sma1033 (死马)   2019-05-02 16:02:00
所以我是说“能不用就不用啊”,像有限次的矩阵运算这种能够用现成package运算塞满pipe line来提升效率是最好~

Links booklink

Contact Us: admin [ a t ] ucptt.com