使用熊猫计算大于先前值的值

时间:2019-05-23 17:12:32

标签: python pandas

我正在尝试计算一个值比上一个值大2的次数。 我尝试过

df['new'] = df.ms.gt(df.ms.shift())

和其他类似的行,但是没有给我我所需要的。

4 个答案:

答案 0 :(得分:1)

您要寻找df.groupby('id').agg({'HourlyTempF':[max,min],'HourlyPrecipIn':sum}) HourlyTempF HourlyPrecipIn max min sum id 3402 56.6 44.9 0.05 40238 56.6 44.9 0.06 45883 57.5 45.3 0.10 吗?找到连续值之间的差,并检查它们的差是否大于或等于2,然后计算diff的行:

True

如果您需要检查差异是否恰好为2,则将(df.ms.diff() >= 2).sum() 更改为>=

==

答案 1 :(得分:1)

由于您需要特定的区别,因此(df.ms.diff() == 2).sum() 将不起作用。您可以简单地减去并查看差异是否大于2:

gt

编辑:更改为获取您的答案,而不是创建新列。 (df.ms - df.ms.shift() > 2).sum() 在这里起作用是因为它将布尔值转换为1和0。

答案 2 :(得分:1)

可能不那么优雅,但:

df['new_ms'] = df['ms'].shift(-1)

df['new'] = np.where((df['ms'] - df['new_ms']) >= 2, 1, 0)

df['new'].sum() 

答案 3 :(得分:0)

您的问题是模棱两可的,但是您想看到一个程序,该程序在pandas中的值比以前的值大2倍。这里是:

import pandas as pd

lst2 = [11, 13, 15, 35, 55, 66, 68] #list of int



dataframe = pd.DataFrame(list(lst2)) #converting into dataframe

count = 0 #we will count how many time n+1 is greater than n by 2
d = dataframe[0][0] #storing first index value to d

for i in range(len(dataframe)):
    #print(dataframe[0][i])
    d = d+2 #incrementing d by 2 to check if it is equal to the next index value
    if(d == dataframe[0][i]):
        count = count+1 #if n is less than n+1 by 2 then keep counting
    d = dataframe[0][i] #update index

print("total count ",count) #printing how many times n was less than n+1 by 2