通过迭代多行计算MannKendall

2024-10-02 02:26:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要计算数据集中每个县的降雨量值。每个县有991行。有没有办法创建一个循环,使用每个县的名称(可以是字符串或整数)计算Mann Kendall值,并将结果保存到新的dataframe/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)

Tags: 数据dataframedataindexresultmannpdkendall
1条回答
网友
1楼 · 发布于 2024-10-02 02:26:55

您可以使用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()

您将在“Value”列中获得一个命名元组,要将每个参数放入单独的列中,您可以执行以下操作:

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

相关问题 更多 >

    热门问题