作者Brahms5566 (Brahms)
看板Python
标题Re: [问题] for + if 优化问题
时间Mon Apr 29 23:50:06 2019
感谢TuCH大大的code! 成功了超快!
但又出现一个问题..如果说原本code的以下标记^的部分
改成df['B'][i] + 1 请问要怎麽写会比较好呢?
就像excel中, 符合条件的栏位, 则B2=B1+1, 如果B1=1, 则B2 = 2
然後往下拉, 依序是3, 4, 5...直到下一个不合条件的值为原本的1,
接着再2, 3, 4..持续下去
谢谢!
: : for i in range(len(df)):
: if df['A'][i+1] == df['A'][i]:
: df['B'][i+1] = df['A'][i] + 1
^^^^^^^^^^
改成=>df['B'][i] + 1
: else:
: df['B'][i+1] = 1
※ 引述《TuCH (谬客)》之铭言:
: 一千万笔大约0.6秒 给您参考看看
: import pandas as pd
: import numpy as np
: # 随机产生测试资料
: data = np.random.randint(1,9,10000000)
: # pandas 读取
: df = pd.DataFrame(data)
: # column 取名
: df.columns = ['A']
: # column B 初始化
: df['B'] = 1
: # 计算
: df.loc[df['A'].diff()==0,'B'] = df['A'].shift()+1
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 223.137.228.83
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1556553008.A.355.html
※ 编辑: Brahms5566 (223.137.228.83), 04/30/2019 00:01:22
1F:推 TuCH: 这个每一个值都跟前一个值有关系 看来要用回圈了 04/30 08:17
2F:→ sherees: 如果条件判断不会随着B栏的值更动产生变化 用前面Tu大的 04/30 11:10
3F:→ sherees: 写法应该就可以了 04/30 11:10
4F:→ BlgAtlfans: 其实全部换成list操作比较好 尽量不要用pandas跑回圈 04/30 12:40
5F:→ Brahms5566: 刚刚尝试用group然後for enumerate转numpy顺利得到想 04/30 21:18
6F:→ Brahms5566: 要的结果了~谢谢大家指引迷津 04/30 21:18
7F:推 jp956956: list操作什麽意思?? 先list做完再给pandas处理吗? 05/02 03:06