Панды, выбирающие данные с определенными условиями

#python #pandas #dataframe

#python #pandas #фрейм данных

Вопрос:

У меня есть фрейм данных, который выглядит следующим образом:

 item    storage
record  paper
record  laptop
record  desktop
file    laptop
file    paper
file    paper
record  desktop
file    desktop
  

Если я хочу новый фрейм данных с 2 критериями, такими как «запись» в столбце «элемент» и «ноутбук» или настольный компьютер в столбце «хранилище», есть ли более простой способ выбрать этот набор данных, а не:

 df1=df[(df['item'] == 'record') amp;  (df['storage'] == 'laptop')]
df2=df[(df['item'] == 'record') amp;  (df['storage'] == 'desktop')]
df3= pd.concat([df1, df2], axis=1)
  

Есть ли более короткий способ сделать это что-то в одной строке, например:

 df3=df[(df['item'] == 'record') amp;  (df['storage'] == 'laptop' or 'desktop')] #This does not work
  

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

1. df['storage'] in ('laptop', 'desktop') ?

Ответ №1:

вы можете изменить одно из условий на .isin :

 >>> df['storage'].isin(['laptop', 'desktop'])
  

итак:

 >>> df[(df['item'] == 'record') amp; (df['storage'].isin(['laptop', 'desktop']))]
     item  storage
1  record   laptop
2  record  desktop
6  record  desktop
  

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

1. Вы отредактировали свой ответ быстрее, чем я смог опубликовать свой, который был идентичен вашему 😉