Панды выбирают диапазон из столбца индекса - PullRequest
0 голосов
/ 11 июня 2018

Мне нужно сделать функцию для выбора диапазона индекса (первый столбец).

1880    Aachen  1   Valid   L5  21.0    Fell    50.77500    6.08333 (50.775000, 6.083330)
1951    Aarhus  2   Valid   H6  720.0   Fell    56.18333    10.23333    (56.183330, 10.233330)
1952    Abee    6   Valid   EH4 107000.0    Fell    54.21667    -113.00000  (54.216670, -113.000000)
1976    Acapulco    10  Valid   Acapulcoite 1914.0  Fell    16.88333    -99.90000   (16.883330, -99.900000)
1902    Achiras 370 Valid   L6  780.0   Fell    -33.16667   -64.95000   (-33.166670, -64.950000)

Как я могу это сделать?

1 Ответ

0 голосов
/ 03 июля 2018

Для настройки ваших данных:

In [30]: df = pd.DataFrame({1880:[ 'Aachen',   1,   'Valid',   'L5',          
                                   21.0,     'Fell',    50.77500,    
                                   6.08333,    (50.775000, 6.083330)],
                            1951:[ 'Aarhus',   2,   'Valid',   'H6',          
                                   720.0,    'Fell',    56.18333,   
                                   10.23333,   (56.183330, 10.233330)],
                            1952:[ 'Abee',     6,   'Valid',   'EH4',         
                                   107000.0, 'Fell',    54.21667, 
                                   -113.00000, (54.216670, -113.000000)],
                            1976:[ 'Acapulco', 10,  'Valid',   'Acapulcoite', 
                                   1914.0,   'Fell',    16.88333,  
                                   -99.90000,  (16.883330, -99.900000)],
                            1902:[ 'Achiras',  370, 'Valid',   'L6',          
                                   780.0,    'Fell',   -33.16667,  
                                   -64.95000, (-33.166670, -64.950000)]}).T                 

In [31]: df
Out[31]: 
             0    1      2            3       4     5        6        7  \
1880    Aachen    1  Valid           L5      21  Fell   50.775  6.08333   
1902   Achiras  370  Valid           L6     780  Fell -33.1667   -64.95   
1951    Aarhus    2  Valid           H6     720  Fell  56.1833  10.2333   
1952      Abee    6  Valid          EH4  107000  Fell  54.2167     -113   
1976  Acapulco   10  Valid  Acapulcoite    1914  Fell  16.8833    -99.9   

                         8  
1880     (50.775, 6.08333)  
1902   (-33.16667, -64.95)  
1951  (56.18333, 10.23333)  
1952    (54.21667, -113.0)  
1976     (16.88333, -99.9)  

Есть несколько способов сделать это:

используя индекс по номеру:

In [32]: def get_range(df, start, finish):
             return df[start:finish]

In [33]: print(get_range(df, 2, 4))
           0  1      2    3       4     5        6        7  \
1951  Aarhus  2  Valid   H6     720  Fell  56.1833  10.2333   
1952    Abee  6  Valid  EH4  107000  Fell  54.2167     -113   

                         8  
1951  (56.18333, 10.23333)  
1952    (54.21667, -113.0)

Или, если ваши данныеупорядочено, и вы ищете группу строк между двумя известными точками (используя соглашение о нарезке для начала и конца), вы можете:

In [34]: def get_range(df, start, finish):
             on=False
             df_list=[]
             for i, row in df.iterrows():
                 if i == start:
                     on=True
                     df_list.append(i)
                 elif on:
                     if i == finish:
                         on=False
                     else:
                         df_list.append(i)
             return df.loc[df_list] 

In [35]: print(get_range(df, 1902, 1952))
            0    1      2   3    4     5        6        7  \
1902  Achiras  370  Valid  L6  780  Fell -33.1667   -64.95   
1951   Aarhus    2  Valid  H6  720  Fell  56.1833  10.2333   

                         8  
1902   (-33.16667, -64.95)  
1951  (56.18333, 10.23333)  

Много места для улучшения кода выше ...

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