如何根据列组合对行进行排序-python

如何根据列组合对行进行排序-python,python,database,data-science,Python,Database,Data Science,有没有办法按不同列的组合对数据帧进行排序?如果行之间的特定列匹配,它们将聚集在一起?下面的例子:非常感谢您的帮助 对数据帧进行排序的一种方法是使用.sort\u values() 下面的代码复制了示例数据帧: df= pd.DataFrame({'v1': [1, 3, 2, 1, 4, 3], 'v2': [2, 2, 4, 2, 3, 2], 'v3': [3, 3, 2, 3, 2, 3],

有没有办法按不同列的组合对数据帧进行排序?如果行之间的特定列匹配,它们将聚集在一起?下面的例子:非常感谢您的帮助


对数据帧进行排序的一种方法是使用.sort\u values()

下面的代码复制了示例数据帧:

df= pd.DataFrame({'v1': [1, 3, 2, 1, 4, 3],
                  'v2': [2, 2, 4, 2, 3, 2],
                  'v3': [3, 3, 2, 3, 2, 3],
                  'v4': [4, 5, 1, 4, 2, 5]})
使用下面的代码,可以按列v1和v2对数据帧进行排序。在这种情况下,v2仅用于断开连接

df.sort_values(by=['v1', 'v2'], ascending=True) 

此处的“by”参数不限于任何数量的变量,因此可以扩展列表以按所需顺序包含更多变量。

这是与图像中显示的排序模式相匹配的最佳方法

import pandas as pd

df = pd.DataFrame(dict(
    v1=[1,3,2,1,4,3],
    v2=[2,2,4,2,3,2],
    v3=[3,3,2,3,2,3],
    v4=[4,5,1,4,2,5],
))

# Make a temp column to sort the df by
df['sort'] = df.astype(str).values.sum(axis=1)
# Sort the df by that column, drop it and reset the index
df = df.sort_values(by='sort').drop(columns='sort').reset_index(drop=1)

print(df)
链接您可以参考-

编辑:Zolzaya Luvsandroj的建议更好:

将熊猫作为pd导入
df=pd.数据帧(dict(
v1=[1,3,2,1,4,3],
v2=[2,2,4,2,3,2],
v3=[3,3,2,3,2,3],
v4=[4,5,1,4,2,5],
))
df=df.sort_值(by=list(df.columns)).reset_索引(drop=1)
打印(df)
链接您可以参考-