Как выбрать из списка только те объекты, которые удовлетворяют определенным условиям в python - PullRequest
0 голосов
/ 03 мая 2020

Мне нужно выбрать объекты, которые имеют определенные перекрывающиеся свойства, из большего набора.

Мне нужно выбрать набор объектов, которые находятся в радиусе 5 от центра, на высотах 1-1.25 от средний план и разных возрастов. До сих пор я пробовал следующее, однако, похоже, он не работает должным образом, в частности, он не зависит от выбора высоты (что, безусловно, должно). Выбранные звезды должны удовлетворять всем условиям.

bulge=s.s[s.s['rxy']<5]

height=[i for i, x in enumerate(bulge['z']) if 1<x<1.25]
age1=[i for i, x in enumerate(bulge['age']) if x<0.1]
age2=[i for i, x in enumerate(bulge['age']) if 9<x<10]

ageheight1=bulge(height and age1)
ageheight2=bulge(height and age2)

Ниже приведены распределения радиальной плотности для различных высот

высота от 0,75-1

высота от 1-2

Видно, что высота никак не влияет на результат, чего не должно быть.

1 Ответ

0 голосов
/ 03 мая 2020

Предполагая, что тип данных, с которым вы работаете, является pandas DataFrame , тогда вы можете составить условные операторы и выбрать, используя это как

ageheight1 = bulge[ (bulge['age']<0.1) & (bulge['z']<1.25) & (bulge['z']>1)]
ageheight2 = bulge[ (bulge['age']<10) & (bulge['age']>9) & (bulge['z']<1.25) & (bulge['z']>1)]
...