В python использование pandas
для нарезки столбца, где data
— набор данных, а «pickup_latitude
» — столбец, следующая строка будет работать
data = data[(data['pickup_latitude']<=90) & (data['pickup_latitude']>=-90)]
Что будет эквивалентно приведенному выше в R, а также для нескольких столбцов с разным диапазоном значений?
или используйте команду subset
.
То же самое будет работать, но вам нужно добавить запятую в конце, чтобы показать, что вы индексируете строки:
data = data[(data['pickup_latitude']<=90) & (data['pickup_latitude']>=-90), ]
Например, на встроенных данных mtcars
:
> mt = mtcars[mtcars['mpg'] <= 20 & mtcars['mpg'] >= 15, ]
> mt
mpg cyl disp hp drat wt qsec vs am gear carb
Hornet Sportabout 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2
Valiant 18.1 6 225.0 105 2.76 3.460 20.22 1 0 3 1
Merc 280 19.2 6 167.6 123 3.92 3.440 18.30 1 0 4 4
Merc 280C 17.8 6 167.6 123 3.92 3.440 18.90 1 0 4 4
Merc 450SE 16.4 8 275.8 180 3.07 4.070 17.40 0 0 3 3
Merc 450SL 17.3 8 275.8 180 3.07 3.730 17.60 0 0 3 3
Merc 450SLC 15.2 8 275.8 180 3.07 3.780 18.00 0 0 3 3
Dodge Challenger 15.5 8 318.0 150 2.76 3.520 16.87 0 0 3 2
AMC Javelin 15.2 8 304.0 150 3.15 3.435 17.30 0 0 3 2
Pontiac Firebird 19.2 8 400.0 175 3.08 3.845 17.05 0 0 3 2
Ford Pantera L 15.8 8 351.0 264 4.22 3.170 14.50 0 1 5 4
Ferrari Dino 19.7 6 145.0 175 3.62 2.770 15.50 0 1 5 6
Maserati Bora 15.0 8 301.0 335 3.54 3.570 14.60 0 1 5 8
Небольшое пояснение: в R кадры данных представляют собой списки столбцов. Если вы используете квадратные скобки с аргументом Один, предполагается, что вы подмножаете столбцы, так как mtcars['mpg']
— это столбец mpg mtcars
, а data['pickup_latitude']
— столбец pickup_latitude data
. Если вы хотите проиндексировать строки, вам нужны аргументы в форме data[rows, columns]
, но если либо rows
, либо columns
отсутствуют, предполагается, что все. Итак, mtcars[1:3, ]
— это первые три строки mtcars
со всеми столбцами. mtcars[mtcars['mpg'] <= 20 & mtcars['mpg'] >= 15, ]
— это строки mtcars
, соответствующие логическим требованиям, со всеми столбцами.
Есть также удобные функции, которые позволяют избежать повторного ввода data$
или data[
, например, это сделает то же самое:
subset(data, pickup_latitude <=90 & pickup_latitude >=-90)
Как выполнить нарезку для нескольких столбцов, как если бы mpg
был нарезан выше, и я хочу также нарезать cyl
, disp
, hp
, drat
, wt
, vs
вместе
Вы имеете в виду выбрать только эти столбцы? mtcars[..same condition.., c("cyl", "disp", ...)]
. Или вы имеете ввиду дополнительные условия? Просто соедините их вместе с помощью &
: mtcars[mtcars['cyl'] == 4 & mtcars['disp'] < 300 & ..., ]
Используйте столько условий в любом количестве столбцов, сколько хотите.
Как сделать для условия типа mpg between 18 to 20
, cyl between 6 to 10
, disp between 10 to 50
? то есть все столбцы имеют разный диапазон значений. @Грегор
Склеить их вместе: subset(mtcars, mpg >= 18 & mpg <= 20 & cyl >= 6 & cyl <= 10 & disp >= 100 & disp <= 300)
. Вы можете использовать &
для и, |
для или...
Спасибо, @Gregor. Это работает, я использовал |
вместо &
между двумя разными столбцами для нарезки.
То же самое, но добавьте запятую в конце, чтобы показать, что вы индексируете строки:
data = data[(data['pickup_latitude']<=90) & (data['pickup_latitude']>=-90), ]