我有一个在负值和正值之间摇摆的数据框.我要做的是找到最后一行的值,并返回它上面所有行的dataframe
,直到符号从负变为正或反之亦然.
问题的一个例子是这样的
import numpy as np
import pandas as pd
df = pd.DataFrame(np.random.randint(-10,10,size=(100, 1)), columns=list('v'))
创建包含从-10到10的数字的数据帧.
我需要做的是找到"V"的最后一行,并返回它上面的所有行,直到它切换符号.运行这段代码会得到以下输出:
93, 3
94, 2
95, 0
96, -1
97, -7
98, -2
我试图获得的是包含第96-98行的新数据帧,并且不需要或切掉第95行以上的所有内容.
由于数据帧内的符号更改了如此多次,因此我在挑选数据帧结束前的最后一个更改时遇到了困难(第95行)
我try 了iloc
和.tail()
的各种切片方法,但都没有成功.
df[(df['v'].tail() < 0).idxmin(): ]
是我得到的最接近的,但是它只返回前面的5个值,有时它可能需要多达20个索引才能改变符号.
我试过各种形式
data[: (df['v'].iloc[-1] < 0)]
个
但我似乎就是得不到我想要的东西.
一个很大的问题是数据集有数百行长,所以有太多的零或符号更改,当我只需要在最后一个符号更改后才需要数据时,我可以想到其他方法.
任何帮助将不胜感激.