【问题标题】:Pandas: Get number of previous rows in a series that had a larger valuePandas:获取系列中具有较大值的先前行数
【发布时间】:2019-12-05 14:02:42
【问题描述】:

假设我有以下数据框:

import pandas as pd
mydict = {
    'date_time':['2019-01-01','2019-01-02','2019-01-03','2019-01-04'],
    'value':[5,3,7,2]
}

df = pd.DataFrame(mydict)

我想创建以下输出:

    date_time  value    Number of previous rows with larger value
0  2019-01-01      5                0
1  2019-01-02      3                1
2  2019-01-03      7                0
3  2019-01-04      2                3

后一列的逻辑是检查前一列的所有值,并统计大于当前行的值的个数。

所以在值为0的第一行中,没有前面的行存在,因此数字为0。

第二行的值为3,前一行的值较大(5),表示“数”为

第3行的值为7,第1行和第2行都不大,所以数字为0。

第 4 行的值为 2,第 1,2,3 行较大,表示数字为 3。

最有效的方法是什么?

【问题讨论】:

标签: python pandas


【解决方案1】:

我们可以为您提供的不是最有效的解决方案,但它确实有效

import pandas as pd
mydict = {
    'date_time':['2019-01-01','2019-01-02','2019-01-03','2019-01-04','2019-01-04', '2019-01-04'],
    'value':[5,3,7,2,4,7]
}

df = pd.DataFrame(mydict)


df.loc[0:0,'count'] = 0

for i in range(df.shape[0]):
    df.loc[i:i,'count'] = df[:i+1][df['value'].loc[:i] > df['value'].loc[i]].shape[0]

df['count'] = df['count'].astype("int32")

【讨论】:

    猜你喜欢
    • 2022-11-02
    • 2014-10-17
    • 2021-11-25
    • 1970-01-01
    • 2020-05-08
    • 1970-01-01
    • 2014-03-07
    • 2022-01-17
    • 2019-02-22
    相关资源
    最近更新 更多