Регулировка интервалов в Pandas - PullRequest
0 голосов
/ 01 апреля 2020

Я создал интервалы в pandas для таблицы частот. Первый интервал выглядит так: (22, 29] и открыт слева - я хочу, чтобы только этот первый интервал был закрыт с обеих сторон следующим образом: [22, 29]. Я пробовал интервалы [0] .closed = " оба "но не сработали.

intervals = pd.interval_range(start = 22, end = 64, freq = 7)
vek_freq_table = pd.Series([0,0,0,0,0,0], index = intervals)


for x in df.loc[df.loc[:,"c"].notnull(), "c"]:
    for y in c_freq_table.index:
        if int(x) in y:
            c_freq_table.loc[y] +=1
            break

1 Ответ

0 голосов
/ 04 апреля 2020

Вы должны создать свой собственный интервальный индекс с помощью списка (или l oop):

intervals = [pd.Interval(i.left, i.right) 
             if no != 0 else pd.Interval(i.left, i.right, closed='both') 
             for (no, i) in  enumerate(intervals)]
intervals

Вывод:

[Interval(22, 29, closed='both'),
 Interval(29, 36, closed='right'),
 Interval(36, 43, closed='right'),
 Interval(43, 50, closed='right'),
 Interval(50, 57, closed='right'),
 Interval(57, 64, closed='right')]

Примечание: проще решение может показаться просто изменить первый элемент, как:

new_first_elem = pd.Interval(intervals[0].left, intervals[0].right, closed='both')
intervals[0] = new_first_elem 

Однако этот код выдает ошибку типа:

TypeError: Index does not support mutable operations
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...