DataFrame数据帧内容去除包含处理

一、原来数据帧行值内容(列值不处理):

p=pd.DataFrame({“high”:[5,7,4,6,11,10,8,13,12],”low”:[3,2,2,3,7,1,6,7,5]})
因为P的值有上千个,而且是不断变化的,所以只能通过判断语句+循环,进行删除包含,得到q。

目标:如果某一行相邻的行值有互相包含的,把被包含的删除,形成新的数据帧行值。

二、按照规则处理后数据帧行值内容:

q=pd.DataFrame({“high”:[7,11,10,13,12],”low”:[2,7,1,7,5]})

三、以上的文字描述,换成图片描述:

四、我的思路:

(一)先创建一个可以删除邻近左右两边数据帧行值的函数,def 删包含()
(二)然后将“删包含()”函数,放进循环。
(三)当开始第一个p[0:1]时,执行“删包含()”函数,存在包含,删除包含后,就返回一个处理新的数据帧q,然后停止循环。
(四)然后用新的数据帧q,再走一遍步骤三,直到不存在包含。

五、问题:

问题是如何返回新的数据帧q,并重新走步骤三。思路到这里卡主了,请高手指点一二。

讨论数量: 4
Jason990420

(2, 7) 为什么被删除了 ??

file

>>> import pandas as pd
>>> p = pd.DataFrame({"high":[5,7,4,6,11,10,8,13,12], "low":[3,2,2,3,7,1,6,7,5]})
>>> q = p.drop(p.index[[0, 1, 2, 3, 6]])
>>> q
   high  low
4    11    7
5    10    1
7    13    7
8    12    5
4年前 评论

@Jason990420 您好!感谢您的热心回复。(2,7)漏了,不好意思。我可能表达的意思不太清楚。P的数据有上千个,只能通过循环来筛选出来。所以不能直接用行索引值直接删除不要的,而要通过判断语句进行筛选。

4年前 评论
Jason990420 4年前
yifeitai (作者) (楼主) 4年前
Jason990420

用 for 不好, 還是 while 較好

4年前 评论

@Jason990420 嗯,我再研究研究,感谢了。

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!