按一列和索引排序

2024-09-25 20:23:19 发布

您现在位置:Python中文网/ 问答频道 /正文

在这样的数据帧中,我试图找出如何根据站点(索引)和深度列对其重新排序,因此它首先给出所有深度不同的d1st1(1,5,eu,z90,MLD),然后再次给出具有相同深度顺序的d1st3

有什么想法吗?你知道吗

BB9


Tags: 数据排序顺序站点eumldd1st3z90
1条回答
网友
1楼 · 发布于 2024-09-25 20:23:19

你首先需要一种方法来订购你的深度栏。我建议创建另一个列,将深度值保存为数字。你知道吗

假设我们首先创建一个函数来转换数据,并将数据帧称为“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])

相关问题 更多 >