我有一个日期和值的数据帧(在下面的代码中,我可能没有正确地解析日期)。在
import pandas as pd
d = {'date': pd.Series(['2010-01-01', '2011-01-01',
'2012-01-01', '2012-07-01',
'2013-01-01']),
'value': pd.Series([0, 2, 1, 4, 3])}
df = pd.DataFrame(d)
我想要一个可以过滤这个DataFrame的函数,它只给我“到目前为止看到的最大值”(相对于日期)的行。在本例中,我将以3行结束(当前行0、1和3的值为0、2和4)。在
在“value”列上使用^{} 获取累积最大值,然后将“value”列的累积最大值与“value”列本身进行比较,只保留“value”列等于其累积最大值的行:
请注意,上述方法将包括重复的最大值。例如,如果有一个值为4的附加行,则输出中将包括两个值为4的行。在
如果不需要重复项,可以对} 来获得与前一个值的差,并将差值保持在正的位置。将^{} 与正值相加以保留第一行:
^{pr2}$cummax
采取类似的方法,但只保留cummax
更改的行。要得到这个值,在累积最大值上使用^{删除重复项的一种稍微简单的方法是只使用第一种方法,后跟^{} ,但根据您的数据,这可能没有那么有效:
使用任何方法生成的示例数据输出:
^{4}$相关问题 更多 >
编程相关推荐