Как получить доступ к значению из строкового столбца? - PullRequest
1 голос
/ 21 января 2020

У меня есть pandas фрейм данных с именем intervals

                 num
40  (321.469, 326.854]
41  (326.854, 332.238]
...
68  (472.232, 477.616]
69  (477.616, 483.001]

Я хочу набрать код, который будет извлекать значения 321.469 и 483.001 и сохранять их в переменных.

Это похоже на тип интервала, но это не так, потому что он загружен из Excel.

Начальный df с реальными интервалами был:

In [1]: df_count
Out[1]:     
                       364
                  364   
    (111.479, 116.863]  1
    (116.863, 122.247]  0
    (122.247, 127.632]  1
    (127.632, 133.016]  3
    (133.016, 138.4]    0
    ... ...
    (1436.036, 1441.42] 1
    (1441.42, 1446.805] 0
    (1446.805, 1452.189]1
    (1452.189, 1457.573]0
    (1457.573, 1462.958]1
    251 rows × 1 columns

Этот df был получен из моего прошлого вопроса. И я абсолютно не представляю, как получить около 30 интервалов с наибольшим количеством наблюдений. Я не знаю, почему столбцы имеют одинаковое имя, и когда я пытаюсь переименовать 364, только верхний 364 переименовывается, но нет имени столбца интервалов, поэтому я не могу получить к ним доступ. Поэтому я делаю это следующим образом:

df_count.to_excel('ranges.xlsx')
colnames=['num', 'ranges', 'itr'] 
new_df = pd.read_excel(r'ranges.xlsx', names=colnames, header=None)
new_df_sort = new_df.sort_values(by=['ranges'])
top_intervals = new_df_sort.tail(30)
new_intervals = top_intervals.sort_values(by=['num'])
intervals = pd.DataFrame(new_intervals['num'])

И, как результат, получаю мой intervals упомянутый ранее фрейм данных. Итак, может быть, есть другой способ извлечь около 30 диапазонов, а затем получить доступ к минимальным и максимальным значениям из этих интервалов.

Кто-нибудь может помочь?

  • Я работаю с Монте-Карло симуляция для прогнозирования будущей цены акций, поэтому мне нужны эти интервалы. Буду рад поделиться результатом если вас заинтересовало.

Спасибо!

1 Ответ

1 голос
/ 21 января 2020
intervals['num'] = intervals['num'].astype('str')

intervals['first_num'] = None
intervals['second_num'] = None

for i in range(len(intevals)):
    intervals.loc[i, 'first_num'] = ''.join(list(intervals.loc[i, 'num'].split(',')[0])[1:])
    intervals.loc[i, 'second_num'] = ''.join(list(intervals.loc[i, 'num'].split(',')[1])[:-1])

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