Pandas:日期/值的数据帧>到目前为止最大值的数据帧?

2024-04-25 07:38:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个日期和值的数据帧(在下面的代码中,我可能没有正确地解析日期)。在

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)。在


Tags: 数据函数代码importdataframepandasdfdate
1条回答
网友
1楼 · 发布于 2024-04-25 07:38:33

在“value”列上使用^{}获取累积最大值,然后将“value”列的累积最大值与“value”列本身进行比较,只保留“value”列等于其累积最大值的行:

df[df['value'].cummax() == df['value']]

请注意,上述方法将包括重复的最大值。例如,如果有一个值为4的附加行,则输出中将包括两个值为4的行。在

如果不需要重复项,可以对cummax采取类似的方法,但只保留cummax更改的行。要得到这个值,在累积最大值上使用^{}来获得与前一个值的差,并将差值保持在正的位置。将^{}与正值相加以保留第一行:

^{pr2}$

删除重复项的一种稍微简单的方法是只使用第一种方法,后跟^{},但根据您的数据,这可能没有那么有效:

df[df['value'].cummax() == df['value']].drop_duplicates(subset='value')

使用任何方法生成的示例数据输出:

^{4}$

相关问题 更多 >