Есть ли способ выбрать определенную часть столбца с использованием диапазона индексов строк в фрейме данных Pandas с использованием python

#python #pandas #dataframe

Вопрос:

например: допустим, у нас есть фрейм данных с именем «учащиеся», где столбец

 index  name    value.  name
    0   a    0.469112  jai
    1   b   -0.282863  pria
    2   c   -1.509059  riya
    3   d   -1.135632  avantika 
    4   e    1.212112  Akashi
    5   f   -0.173215  conan
    6   g    0.119209  ai chan
    7   h   -1.044236  shinichi
    8   i   -0.861849  Edogawa
    9   j   -2.104569  black org
 

Теперь я специально хочу выбрать значения столбцов, в которых строки находятся в диапазоне 4:8, т. е.

 4   e    1.212112  Akashi
5   f   -0.173215  conan
6   g    0.119209  ai chan
7   h   -1.044236  shinichi
 

Я только начал понимать панд, поэтому у меня есть сомнения, связанные с этим материалом.

Комментарии:

1. df.илок[4:8] или что-то в этом роде. Официальные документы Pandas хороши, я рекомендую почитать.

Ответ №1:

Попробуйте использовать set_index и нарезать:

 >>> df.set_index('index')[4:8].reset_index()
   index name    value.    name.1
0      4    e  1.212112    Akashi
1      5    f -0.173215     conan
2      6    g  0.119209   ai chan
3      7    h -1.044236  shinichi
>>> 
 

Или попробуйте с кондиционированием:

 >>> df[df['index'].lt(8) amp; df['index'].ge(4)]
   index name    value.    name.1
4      4    e  1.212112    Akashi
5      5    f -0.173215     conan
6      6    g  0.119209   ai chan
7      7    h -1.044236  shinichi
>>> 
 

Или просто:

 >>> df[4:8]
   index name    value.    name.1
4      4    e  1.212112    Akashi
5      5    f -0.173215     conan
6      6    g  0.119209   ai chan
7      7    h -1.044236  shinichi
>>> 
 

Комментарии:

1. Я понял 1-й и 3-й методы, но не могли бы вы, пожалуйста, объяснить второй, в частности, работу lt и ge.

2. @PriyaSinha Второй отфильтровывает, если столбцы индекса меньше 8 и больше или равны 4 , то он сохранит эту строку.

3. @PriyaSinha lt означает ниже, ge означает больше или равно

Ответ №2:

Вы можете использовать df.iloc[row_start:row_end, col_start:col_end] В вашем случае используйте следующий код

 students.iloc[4:8, :] # to take all columns we don't need to put any number range
 

Ответ №3:

вы можете попробовать

 df[4:8]
 

или

 df.loc[4:7]
 

Ответ №4:

попробуйте это:

 df.set_index('index').iloc[4:8,:]
 

Ответ №5:

if index -это столбец в вашем примере, и вы хотите, чтобы значение index составляло от 4 до 7. Вы можете сделать:

 df[df['index'].between(4,7)]
 

Если вы просто хотите выбрать строки с 4 по 7, вы можете сделать:

 df.iloc[4:8]