Extract left and right limit from a Series of pandas Intervals

前端 未结 3 1906
终归单人心
终归单人心 2021-01-02 13:42

I want to get interval margins of a column with pandas intervals and write them in columns \'left\', \'right\'. Iterrows does not work (documentation says it would not be us

3条回答
  •  慢半拍i
    慢半拍i (楼主)
    2021-01-02 14:19

    Create an pandas.IntervalIndex from your intervals. You can then access the .left and .right attributes.

    import pandas as pd
    
    idx = pd.IntervalIndex([i1, i2, i3, i4, i5, i6, i7, i8, i9])  
    pd.DataFrame({'intervals': idx, 'left': idx.left, 'right': idx.right})
    
        intervals  left  right
    0    (85, 94]    85     94
    1   (95, 104]    95    104
    2  (105, 114]   105    114
    3  (115, 124]   115    124
    4  (125, 134]   125    134
    5  (135, 144]   135    144
    6  (145, 154]   145    154
    7  (155, 164]   155    164
    8  (165, 174]   165    174
    

    Another option is using map and operator.attrgetter (look ma, no lambda...):

    from operator import attrgetter
    
    df['left'] = df['intervals'].map(attrgetter('left'))
    df['right'] = df['intervals'].map(attrgetter('right'))
    
    df
        intervals left right
    0    (85, 94]   85    94
    1   (95, 104]   95   104
    2  (105, 114]  105   114
    3  (115, 124]  115   124
    4  (125, 134]  125   134
    5  (135, 144]  135   144
    6  (145, 154]  145   154
    7  (155, 164]  155   164
    8  (165, 174]  165   174
    

提交回复
热议问题