使用Python,如何创建一个函数来计算表示比前一行低的值的行的比例?

使用Python,如何创建一个函数来计算表示比前一行低的值的行的比例?,python,pandas,dataframe,counter,Python,Pandas,Dataframe,Counter,使用Python,如何创建一个函数来计算表示比前一行低的值的行的比例? 换句话说,我需要一个函数来迭代数据帧的特定系列列下的值,并且只计算下一行的值(在称为“里程”的列下)小于当前行的值的值。比如说你有: 里程: 第1排:30 第2排:20 第3排:40 第4排:50 第5排:60 第6排:55 第7排:75 如果计数器工作正常,它将发现第2行的值20小于第1行的值30,因此它将向计数器添加+1(计算该值)。 在上面的示例中,它应该计数的另一行是第6行:55,该行小于前一行5:60,因此对该行进

使用Python,如何创建一个函数来计算表示比前一行低的值的行的比例? 换句话说,我需要一个函数来迭代数据帧的特定系列列下的值,并且只计算下一行的值(在称为“里程”的列下)小于当前行的值的值。比如说你有: 里程: 第1排:30 第2排:20 第3排:40 第4排:50 第5排:60 第6排:55 第7排:75

如果计数器工作正常,它将发现第2行的值20小于第1行的值30,因此它将向计数器添加+1(计算该值)。
在上面的示例中,它应该计数的另一行是第6行:55,该行小于前一行5:60,因此对该行进行计数。 所以最后的计数是:2。 然后我可以把最后的计数除以总行数得到一个比例


提前感谢您的帮助

您可以像这样使用熊猫功能:

import pandas as pd
data = {'mileage': [30,20,40,50,60,55,75] }
df = pd.DataFrame(data)
smaller_rows = (df.mileage < df.mileage.shift()).sum()
print(smaller_rows)
out[]: 2
proportion = smaller_rows/len(df) 

您可以使用
series.shift
功能执行此操作:

proportion = len(df[df['Mileage'] < df['Mileage'].shift(1)])/len(df)
print(proportion)
守则的一部分:

df[df['Mileage'] < df['Mileage'].shift(1)]
df[df[‘里程数’]
使用掩蔽仅选择满足该条件的行(在本例中为2),因此我们将该行的
len
除以df的总
len
,并获得比例。
.shift(1)
允许您访问“下一行”值,以便以这种方式与当前行进行比较

回答得好!非常感谢。
df[df['Mileage'] < df['Mileage'].shift(1)]