Объявите имена переменных из массива, а затем назначьте каждую переменную в качестве фрейма данных pandas. - PullRequest
0 голосов
/ 21 октября 2019

У меня есть массив строк:

sat_names = ['3254','3269', '3291', '3329', '3352', '3367', 
                  '3414', '3484', '3534', '3565', '3639', '3664']

Я хочу объявить переменную с именами следующим образом:

Msat_vir_cut_3254, Msat_vir_cut_3269 ... and so on

У меня есть функция с именем cut, которая даетpandas dataframe в качестве выходных данных.

Я хочу назначить выходные данные dataframe функции 'cut' для имен переменных, используя цикл.

## define 'cut' function
def cut(frame,val,f,log):
    if log == True:
        fac = np.log10(f)
        low_lim = np.log10(val) - fac
        up_lim = np.log10(val) + fac
        cut_df = frame.loc[(np.log10(frame) > low_lim) & 
                        (np.log10(frame) < up_lim)]
    else:
        low_lim = val - f
        up_lim = val + f
        cut_df = frame.loc[(frame > low_lim) & (frame < up_lim)]
    return cut_df

Пример использования функции вырезания:

Mh_sat = [3.28634047e+11 3.54157219e+11 3.28634047e+11 3.29435180e+14
 1.46750987e+12 1.65298123e+12 2.34478681e+12 4.23401172e+11
 2.47554291e+11 1.66607462e+11 1.36044543e+12 3.67648925e+12]

Msat_vir_cut_3254 = cut(data['Msat'],Mh_sat[0],3,True)

Я хочу повторить этот процесс для всех имен переменных, заданных в sat_names, и для всех значений Mh_sat. sat_names и Mh_sat имеют одинаковую длину, т.е. 12

1 Ответ

1 голос
/ 21 октября 2019

Предполагая, что cut (..) возвращает кадр данных,

sat_names = ['3254','3269', '3291', '3329', '3352', '3367', 
              '3414', '3484', '3534', '3565', '3639', '3664']
cut(...).columns = ["Msat_vir_cut_" + i for i in sat_names]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...