通过迭代多行计算Mann-Kendall



我需要为数据集中每个县的降水量值计算Mann-Kendall。每个县有991行。有没有办法创建一个循环,以每个县的名称(可以是字符串或整数(并计算Mann-Kendall,将结果保存到一个新的数据帧/excel文件中?

例如,我的数据帧看起来像这样:

data = pd.DataFrame({'County': ['Adair', 'Adair', 'Adair', 'Allegany', 'Allegany', 'Allegany', 'Alexander', 'Alexander', 'Alexander'], 'Value': [1, 2, 4, 1, 2, -1, 0, 2, 1]})    

我理想的输出应该是:

Adair: Mann-Kendall Result    
Allegany: Mann-Kendall Result    
Alexander: Mann-Kendall Result    

到目前为止,我的代码非常简单,但并没有达到我想要的效果:

result = pd.DataFrame()
for index in data:
mann = mk.original_test(test1[index])
result.append(mann)

您可以使用group by:计算每个县的mk

data = pd.DataFrame({'County': ['Adair', 'Adair', 'Adair', 'Allegany', 'Allegany', 'Allegany', 'Alexander', 'Alexander', 'Alexander'],
'Value': [1, 2, 4, 1, 2, -1, 0, 2, 1]})    
df_mk=data.groupby('County')['Value'].agg(mk.original_test).reset_index()

您将在"值";列,要将每个参数放入单独的列中,可以执行以下操作:

param_cols='trend h p z Tau s var_s slope intercept'.split()
df_mk[param_cols]=[row for row in df_mk['Value']]

最新更新