我有两个具有相同列名的数据帧,例如:
col1 col2 col3
1 2 3
和
col1 col2 col3
4 5 6
1 7 8
我已经附加了它们,所以现在新的数据帧如下所示:
col1 col2 col3
1 2 3
4 5 6
1 7 8
问题是,我需要col1中具有相同值的行一个接一个地出现,就像这样:
col1 col2 col3
1 2 3
1 7 8
4 5 6
如何按col1对数据帧进行排序以创建这种效果(而不修改数据帧类型(?
使用DataFrame.sort_values
:
df = pd.concat([df1, df2]).sort_values('col1', ignore_index=True)
如果您关心确保数据帧1的值在绑定的数据帧2的值之前排序,则可以使用"mergesort"算法。默认算法将任意排列绑定的值。
df.sort_values(by='col1', axis=1, ascending=True, inplace=True, kind='mergesort')
您可以按任意列对DataFrame进行排序,例如:
df.sort_values(by=['col_1', 'col_2'], ascending=[True, False], inplace=True)
之后,您可能需要重置行索引,因为它们会被打乱:
df.reset_index(drop=True, inplace=True)