如何在python中只从满足特定条件的列表中选择对象



我需要从较大的集合中选择具有某些重叠属性的对象。

我需要选择一组距离中心半径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 的高度

可以看出,高度根本不会影响结果,事实并非如此。

假设您正在处理的数据类型是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)]

最新更新