如何使用Python根据动态条件分隔数据帧的行
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何使用Python根据动态条件分隔数据帧的行,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3967字,纯文字阅读大概需要6分钟。
内容图文
![如何使用Python根据动态条件分隔数据帧的行](/upload/InfoBanner/zyjiaocheng/684/25fb7f7d61bd442fa79b3c61fa33d486.jpg)
奇怪的问题,我似乎无法缠住我的头,我知道有一种更好的查看方式,我只是被卡住了.我需要根据类型获取这些数据的大块. 1到4以一种集合的形式并列,所以我想例如从0到8行,然后是9行.每个集合将作为条目输入数据库.
num date type signed
0 294981 2015-05-01 1 None
1 299888 2015-05-22 2 2015-05-28
2 299891 2015-05-22 2 2015-05-28
3 316150 2015-07-14 3 2015-07-23
4 336930 2015-10-13 3 2015-10-16
5 357536 2015-12-29 3 2015-12-29
6 379224 2016-03-14 3 2016-03-18
7 403862 2016-06-10 3 2016-06-10
8 414282 2016-07-26 4 2016-08-03
9 439184 2016-11-10 1 2016-11-14
10 448972 2016-12-12 2 2016-12-14
11 464306 2017-02-02 3 2017-02-06
问题是此数据不是静态的,有一些数据集可能包含10行3型,1或4型行.因此,如果我有以下内容:
num date type signed
0 294981 2015-05-01 2 None
1 299888 2015-05-22 2 2015-05-28
2 299891 2015-05-22 2 2015-05-28
3 316150 2015-07-14 3 2015-07-23
4 336930 2015-10-13 3 2015-10-16
5 357536 2015-12-29 3 2015-12-29
6 379224 2016-03-14 1 2016-03-18
7 403862 2016-06-10 3 2016-06-10
8 414282 2016-07-26 3 2016-08-03
9 439184 2016-11-10 4 2016-11-14
10 448972 2016-12-12 1 2016-12-14
11 464306 2017-02-02 2 2017-02-06
我需要下车:
num date type signed
0 294981 2015-05-01 2 None
1 299888 2015-05-22 2 2015-05-28
2 299891 2015-05-22 2 2015-05-28
3 316150 2015-07-14 3 2015-07-23
4 336930 2015-10-13 3 2015-10-16
5 357536 2015-12-29 3 2015-12-29
num date type signed
6 379224 2016-03-14 1 2016-03-18
7 403862 2016-06-10 3 2016-06-10
8 414282 2016-07-26 3 2016-08-03
9 439184 2016-11-10 4 2016-11-14
num date type signed
10 448972 2016-12-12 1 2016-12-14
11 464306 2017-02-02 2 2017-02-06
不幸的是,除了那个愚蠢的类型值之外,没有其他方法可以对数据进行分组.我能胜任Pandas的工作,无法找到实现此目的的方法,我也无法想到其他任何可用于此目的的方法,而不必告诉Python确切要获取的值,而没有查看数据我当然不知道.
非常感谢您的帮助! (顺便说一句,我在标题中说了“动态条件”,因为类型列的值不是1-4、2-4或1-3或我可以设置的任何值.它会随当时生成的数据而变化)
解决方法:
假设您要在类型低于上一行中的类型之后重新开始组,则此代码应该起作用:
class Group():
start = 0
last_type = 0
def four_group(self,x):
if x < Group.last_type:
Group.start +=1
groupNum = Group.start
Group.last_type = x
return groupNum
df = pd.read_csv("chart.csv")
zzz = Group()
df['TempGroup'] = df.type.apply(lambda x:zzz.four_group(x))
使用第二个数据框:
num date type signed
0 294981 2015-05-01 2 None
1 299888 2015-05-22 2 2015-05-28
2 299891 2015-05-22 2 2015-05-28
3 316150 2015-07-14 3 2015-07-23
4 336930 2015-10-13 3 2015-10-16
5 357536 2015-12-29 3 2015-12-29
6 379224 2016-03-14 1 2016-03-18
7 403862 2016-06-10 3 2016-06-10
8 414282 2016-07-26 3 2016-08-03
9 439184 2016-11-10 4 2016-11-14
10 448972 2016-12-12 1 2016-12-14
11 464306 2017-02-02 2 2017-02-06
代码返回:
num date type signed TempGroup
0 294981 5/1/2015 2 None 0
1 299888 5/22/2015 2 5/28/2015 0
2 299891 5/22/2015 2 5/28/2015 0
3 316150 7/14/2015 3 7/23/2015 0
4 336930 10/13/2015 3 10/16/2015 0
5 357536 12/29/2015 3 12/29/2015 0
6 379224 3/14/2016 1 3/18/2016 1
7 403862 6/10/2016 3 6/10/2016 1
8 414282 7/26/2016 3 8/3/2016 1
9 439184 11/10/2016 4 11/14/2016 1
10 448972 12/12/2016 1 12/14/2016 2
11 464306 2/2/2017 2 2/6/2017 2
然后,您可以基于TempGroup拆分数据帧,然后删除TempGroup列.
编辑:混合数据帧
内容总结
以上是互联网集市为您收集整理的如何使用Python根据动态条件分隔数据帧的行全部内容,希望文章能够帮你解决如何使用Python根据动态条件分隔数据帧的行所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。