本站消息

站长简介/公众号


站长简介:逗比程序员,理工宅男,前每日优鲜python全栈开发工程师,利用周末时间开发出本站,欢迎关注我的微信公众号:程序员总部,程序员的家,探索程序员的人生之路!分享IT最新技术,关注行业最新动向,让你永不落伍。了解同行们的工资,生活工作中的酸甜苦辣,谋求程序员的最终出路!

  价值13000svip视频教程,python大神匠心打造,零基础python开发工程师视频教程全套,基础+进阶+项目实战,包含课件和源码

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

Pandas - 使用 for 循环将较大的数据帧切成较小的数据帧

发布于2021-10-13 11:26     阅读(1029)     评论(0)     点赞(3)     收藏(1)



再次,一个 python 新手——但不断学习。

我在下面有一个 DataFrame 如下:

打印上一行和下一行标签=QQQ

       timestamp    close    high     low     open    tags   vol  new_column
719   2002-11-13  54.2400  55.9300  54.1100  55.3600  None  536    0.002    
720   2002-11-14  55.9900  57.0000  55.8700  56.9900   QQQ  391    0.032    
721   2002-11-15  56.6000  56.9200  55.6700  56.6900  None  387    0.010    
3204  2012-09-26  30.2800  30.6000  30.0400  30.1650  None  546   -0.021    
3205  2012-09-27  30.1700  30.4000  29.8900  30.1600   QQQ  471   -0.003    
3206  2012-09-28  30.1800  30.2600  29.7400  29.7600  None  542    0.0003     
3534  2014-01-22  36.2600  36.3200  35.7500  35.9300  None  219   -0.015    
3535  2014-01-23  36.0900  36.1300  35.5200  36.0550   QQQ  430   -0.004    
3536  2014-01-24  37.4500  37.5500  36.5300  36.8050  None  763    0.037

如何创建具有唯一名称的“n”(在本例中为 3 个)数据框,由标签 = QQQ 上方和下方的数据组成?我正在考虑使用 for 循环,但到目前为止还没有取得任何成功。


解决方案


首先创建一系列标记,用于识别数据帧的第一行:

marks = df['tags'].shift(-1)

将 None 转换为 NaN(用于进一步填充)并将 QQQ 转换为 1(用于进一步计数):

marks[marks=='None'] = np.nan # I assume that 'None' is a string
marks[marks=='QQQ'] = 1

计算累积总和并填补空白:

marks = marks.cumsum().fillna(method='ffill')

最后,按标记分组但只取每个片段的前三行,以防 QQQ 块之间存在间隙:

df_list = [x.iloc[:3] for _,x in df.groupby(marks)]






所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:https://www.pythonheidong.com/blog/article/1057254/8b73770cc0089d1f2d50/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

3 0
收藏该文
已收藏

评论内容:(最多支持255个字符)