Как указать имя фрейма данных в переменной (строка, dict. Item) - PullRequest
0 голосов
/ 24 января 2020

Я разделил мои данные на четыре кадра данных (SE_df, SO_df и т. Д .; каждый соответствует определенному шаблону c в одном из столбцов исходных данных). Я хочу запустить один и тот же процесс на каждом из четырех.

Я пробовал что-то вроде этого (Примечание: фактический процесс длиннее, но начинается с value_counts.)

lookup_table = {
    'SE': [SE_df, 'SE_df_counts'],
    'SO': [SO_df, 'SO_df_counts'],
    'OC': [OC_df, 'OC_df_counts'],
    'CW': [CW_df, 'CW_df_counts'] 
}

for site in ['SE', 'SO', 'OC', 'CW']:
    dframe_in = lookup_table[site][0]
    dframe_out = lookup_table[site][1]

    dframe_out = dframe_in.apply(pd.value_counts)
    # ... 

Когда l oop заканчивается, я хочу четыре новых DataFrames: SE_df_counts, SO_df_counts, ... et c

Вместо этого у меня есть один новый DataFrame с именем dframe_out.

Я изначально пытался использовать

lookup_table = {
    'SE': [SE_df, SE_df_counts],
    ...
    }

но python жаловался на то, что DataFrame с именем SE_df_counts еще не существует.

Я пытался заставить его существовать (что делает код более хрупким, но это стоило того).

SE_df_counts = pd.DataFrame()
lookup_table = {
    'SE': [df_SE_mic, SE_df_counts],
}

for site in ['SE']:
    dframe_in = lookup_table[site][0]
    dframe_out = lookup_table[site][1]

    dframe_out = dframe_in.apply(pd.value_counts)

и я до сих пор получаю DataFrame с именем dframe_out (который действительно смутил меня).

Есть ли способ передать желаемое имя кадра данных как переменную (или значение словаря) ? Здесь я вижу много заманчивых рекомендаций, когда люди говорят «Используй словарь», но примеры всегда более сложны, чем то, что я пытаюсь сделать, и окончательные ответы часто обеспечивают альтернативные способы решения вопроса (например, этот вопрос был очень близок, но выбранный ответ не относился к моему варианту использования.)

1 Ответ

0 голосов
/ 24 января 2020

Как насчет:

lookup_table = {
    'SE': [SE_df, None ],
    'SO': [SO_df, None ],
    'OC': [OC_df, None ],
    'CW': [CW_df, None ] 
}

for site in ['SE', 'SO', 'OC', 'CW']:
    dframe_in = lookup_table[site][0]

    lookup_table[site][1] = dframe_in.apply(pd.value_counts)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...