#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]