假设我有以下数据框:
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。
在值为2的第4行中,第1,2,3行较大,表示数字为3。
最有效的方法是什么?
最佳答案
我们不能为您提供最有效的解决方案,但可以
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")
关于python - Pandas :获取具有较大值的系列中的前几行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59188681/