我正在尝试计算一个值比上一个值大2的次数。 我尝试过
df['new'] = df.ms.gt(df.ms.shift())
和其他类似的行,但是没有给我我所需要的。
答案 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