在这样的数据框中,我试图找出如何根据 stations (索引)和 depth 列对它进行重新排序,因此它首先给了我全部 d1st1 (具有所有不同的深度(1、5,eu,z90,MLD)),然后再次 d1st3 ,并具有相同的深度顺序等。
有什么想法吗?
答案 0 :(得分:2)
您首先需要一种方法来订购深度列。我建议创建另一列以将深度值保存为数字。
比方说,我们首先创建一个函数来转换您的数据,然后将您的数据框称为“ df”。该功能取决于深度列上的值的组织方式。如果它们都处于常规模式,则可以尝试其他方法,但是如果您的值像示例中那样组织,则可以解决问题:
def _depth_index(x):
if x=='1m':
return 1.0
elif x=='5m':
return 5.0
elif x =='90':
return 90.0
elif x=='eu' or x== 'MLD':
return 0.0 #Not sure what 'eu' or 'MLD' stands for... Might want to return something else.
else:
return 0.0 # Default value
然后,将函数应用于数据框中的新列:
df['indexed_depth'] = df['depth'].apply(lambda x: _depth_index(x))
然后对值进行排序:
sorted_df = df.sort_values(['stations', 'indexed_depth'], ascending=[True, True])