我需要为数据集中每个县的降水量值计算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']]