栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

根据列值拆分数据框

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

根据列值拆分数据框

首先,您可以通过将值列与零进行比较来创建组号,然后对这些布尔值求和。

df['group_no'] = (df.val == 0).cumsum()>>> df.head(6)      EndDate       val  group_no0  2007-10-31  0.000000         11  2007-11-30 -0.033845         12  2007-12-31 -0.033630         13  2008-01-31 -0.009449         14  2008-02-29  0.000000         25  2008-03-31 -0.057450         2

接下来,您可以结合使用字典理解

loc
来选择相关的
group_no
数据框。为了获得最后的组号,我得到了
iat
用于基于位置的索引的最后一个值。

d = {i: df.loc[df.group_no == i, ['EndDate', 'val']]      for i in range(1, df.group_no.iat[-1])}>>> d{1:       EndDate       val 0  2007-10-31  0.000000 1  2007-11-30 -0.033845 2  2007-12-31 -0.033630 3  2008-01-31 -0.009449,  2:       EndDate       val 4  2008-02-29  0.000000 5  2008-03-31 -0.057450 6  2008-04-30 -0.038694,  3:       EndDate       val 7  2008-05-31  0.000000 8  2008-06-30 -0.036245 9  2008-07-31 -0.005286}

编辑 正如@DSM所建议的,基于具有15k行的示例数据帧,使用groupby的速度似乎快6倍。

d = {n: df2.ix[rows]      for n, rows in enumerate(df2.groupby('group_no').groups)}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/669560.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号