我有一个DataFrame,我通过对.fits文件进行以下操作来创建它:
data_dict= dict()
for obj in sortedpab:
for key in ['FIELD', 'ID', 'RA' , 'DEC' , 'Z_50', 'Z_84','Z_16' , 'PAB_FLUX', 'PAB_FLUX_ERR']:
data_dict.setdefault(key, list()).append(obj[key])
gooddf = pd.DataFrame(data_dict)
gooddf['Z_ERR']= ((gooddf['Z_84'] - gooddf['Z_50']) + (gooddf['Z_50'] - gooddf['Z_16'])) / (2 *
gooddf['Z_50'])
gooddf['OBS_PAB'] = 12820 * (1 + gooddf['Z_50'])
gooddf.loc[gooddf['FIELD'] == "ERS" , 'FIELD'] = "ERSPRIME"
gooddf = gooddf[['FIELD' , 'ID' , 'RA' , 'DEC' , 'Z_50' , 'Z_ERR' , 'PAB_FLUX' , 'PAB_FLUX_ERR' ,
'OBS_PAB']]
gooddf = gooddf[gooddf.OBS_PAB <= 16500]
这让我得到了一个有 351 行和 9 列的 DataFrame。我想根据特定索引仅保留某些行,我考虑采取以下方式:
indices = [5 , 6 , 9 , 10]
gooddf = gooddf[gooddf.index == indices]
我希望它只保留数组索引中列出的索引值所对应的行,但这引起了一些问题。
我找到了一种使用for循环来实现此目的的方法:
good = np.array([5 , 6 , 9 , 12 , 14 , 15 , 18 , 21 , 24 , 29 , 30 , 35 , 36 , 37 , 46 , 48 ])
gooddf50 = pd.DataFrame()
for i in range(len(good)):
gooddf50 = gooddf50.append(gooddf[gooddf.index == good[i]])
有没有更好的方式来完成这个任务,最好只使用 pandas?
gooddf.iloc[indices]
? - ALollzgood = np.array([5, 6, 9])
然后执行gooddf.iloc[good]
时,它返回了索引为10、11和15的值。 - Nikko Cleri