熊猫按一列和索引排序

时间:2018-10-02 11:38:31

标签: python pandas

在这样的数据框中,我试图找出如何根据 stations (索引)和 depth 列对它进行重新排序,因此它首先给了我全部 d1st1 (具有所有不同的深度(1、5,eu,z90,MLD)),然后再次 d1st3 ,并具有相同的深度顺序等。

有什么想法吗?

BB9

1 个答案:

答案 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])