首页 > 解决方案 > 如何从 Python 中的 Double For 循环中的值创建字典?

问题描述

如何创建标题为“纬度”、“经度”、“DST_R”和“Kp_R”的字典并为每次迭代保存 dst_R 和 kp_R?

下面是我目前拥有的代码,并确保它正确打印了我想要的所有值,但我真的想将纬度(-90 到 90)、经度(0 到 359)、dst_R 和 kp_R 保存在字典中。

作为参考 df_dst 具有以下格式: 在此处输入图像描述

和 df_kp 具有以下格式:

在此处输入图像描述

for i in np.arange(0,360): # looping through longitude
    for j in np.arange(-90,91): # looping through latitude 
        
        # DST Rigidity
        dst_R = df_dst.query('lat == ' + str(j) + 'and lon == ' + str(i)).R
        
        # Kp Rigidity
        west_subset = West.query('times>= "2017-09-10 17:00:00" and times < "2017-09-10 19:05:00"')

        for t in range(len(west_subset.times)):
                    current_time = west_subset.times.iloc[t]
                    current_hour = current_time.hour
                    if np.logical_and(current_hour >= 0, current_hour < 3): 
                        kp_tmp = kp.query('date == "' + datetime.strftime(west_subset.times.iloc[t], '%Y-%m-%d 00:00:00')+'"').kp.values[0]
                    elif np.logical_and(current_hour >= 3, current_hour < 6): 
                        kp_tmp = kp.query('date == "' + datetime.strftime(west_subset.times.iloc[t], '%Y-%m-%d 03:00:00')+'"').kp.values[0]
                    elif np.logical_and(current_hour >= 6, current_hour < 9): 
                        kp_tmp = kp.query('date == "' + datetime.strftime(west_subset.times.iloc[t], '%Y-%m-%d 06:00:00')+'"').kp.values[0]
                    elif np.logical_and(current_hour >= 9, current_hour < 12): 
                        kp_tmp = kp.query('date == "' + datetime.strftime(west_subset.times.iloc[t], '%Y-%m-%d 09:00:00')+'"').kp.values[0] 
                    elif np.logical_and(current_hour >= 12, current_hour < 15): 
                        kp_tmp = kp.query('date == "' + datetime.strftime(west_subset.times.iloc[t], '%Y-%m-%d 12:00:00')+'"').kp.values[0]
                    elif np.logical_and(current_hour >= 15, current_hour < 18): 
                        kp_tmp = kp.query('date == "' + datetime.strftime(west_subset.times.iloc[t], '%Y-%m-%d 15:00:00')+'"').kp.values[0]
                    elif np.logical_and(current_hour >= 18, current_hour < 21): 
                        kp_tmp = kp.query('date == "' + datetime.strftime(west_subset.times.iloc[t], '%Y-%m-%d 18:00:00')+'"').kp.values[0]
                    else:
                        kp_tmp = kp.query('date == "' + datetime.strftime(west_subset.times.iloc[t], '%Y-%m-%d 21:00:00')+'"').kp.values[0]

        if kp_tmp < 5:
            kp_R = df_kp.query('LAT == ' + str(j) + 'and LON == ' + str(i)).R_quiet
        else:
            kp_R = df_kp.query('LAT == ' + str(j) + 'and LON == ' + str(i)).R_storm

最终我希望字典看起来像:

Latitude  Longitude  DST_R                 Kp_R
-90       0          -0.3013268844290973   0.03
-89       0          -0.29102307011436673  0.03
-88       0          -0.27900238806939714  0.05
-87       0          -0.2651162151965792   0.07
...

我之前尝试过的方法不起作用,因为我无法通过对 kp_Rdst_R执行相同的操作来迭代。dst_R.item()[i]所以我不知道如何保存这些值而不在每次循环运行时替换它们。我感谢任何和所有的建议!

标签: pythonloopsdictionary

解决方案


推荐阅读