Создание нескольких списков для цикла for с динамическими именами в Python - PullRequest
0 голосов
/ 05 сентября 2018

Я пытаюсь выяснить средние значения и стандартное отклонение нескольких столбцов моего набора данных, а затем сохранить их как новый столбец в новом фрейме данных. т.е. для каждой 'GROUP' в наборе данных я хочу один столбец в новом фрейме данных с его средним значением и SD. Я придумал следующий сценарий, но не могу назвать его динамически.

Average_F1_S_list, Average_F1_M_list, SD_F1_S_list, SD_F1_M_list = ([] for i in range(4))
Groups= DF['GROUP'].unique().tolist()
for key in Groups:
    Average_F1_S = DF_DICT[key]['F1_S'].mean()
    Average_F1_S_list.append(Average_F1_S)

    SD_F1_S = DF_DICT[key]['F1_S'].std()
    SD_F1_S_list.append(SD_F1_S)

    Average_F1_M = DF_DICT[key]['F1_M'].mean()
    Average_F1_M_list.append(Average_F1_M)

    SD_F1_M = DF_DICT[key]['F1_M'].std()
    SD_F1_M_list.append(SD_F1_M)
df=pd.DataFrame({'Group':Groups,
            'Average_F1_S':Average_F1_S_list,'Standard_Dev_F1_S':SD_F1_S_list,
            'Average_F1_M':Average_F1_M_list,'Standard_Dev_F1_M':SD_F1_M_list}, 
                columns=['Group','Average_F1_S','Standard_Dev_F1_S','Average_F1_M', 'Standard_Dev_F1_M'])

Это не будет хорошим решением, поскольку в нем слишком много функций. Можно ли как-нибудь создать списки динамически?

1 Ответ

0 голосов
/ 05 сентября 2018

Это должно сработать! Надеюсь, это поможет

# These are all the keys you want
key_names = ['F1_S', 'F1_M']

# Holds the data you want to pass to the dataframe.
df_info = {'Groups': Groups}


for group_name in Groups:

    # For each group in the groups, we iterate over all the keys we want.
    for key in key_names:

        # Generate a keyname that you want for your dataframe.
        avg_key_name = key + '_Average'
        std_key_name = key + '_Standard_Dev'

        if avg_key_name not in df_info:
            df_info[avg_key_name] = []
            df_info[std_key_name] = []

        df_info[avg_key_name].append(DF_DICT[group_name][key].mean())
        df_info[std_key_name].append(DF_DICT[group_name][key].std())

df = pd.DataFrame(df_info)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...