使用熊猫对数据框进行排序。保持列完整

时间:2018-10-24 15:44:20

标签: python pandas sorting dataframe

如下图所示,我想按Type的字母顺序对聊天进行排序。但是,我不想弄乱每个[Date , User_id]Chat name的顺序。鉴于输入数据框位于左侧,我该怎么办? (在python中使用Pandas)

enter image description here

2 个答案:

答案 0 :(得分:2)

您要使用a stable sorting algorithm来对值进行排序,这是mergesort:

df.sort_values(by='Type', kind='mergesort') 

来自链接的答案:

  

如果两个对象相等,则说排序算法是稳定的   键在排序输出中的显示顺序与它们在   输入数组进行排序。

来自pandas docs

  

种类:{“快速排序”,“合并排序”,“堆排序”},默认为“快速排序”

     

选择排序算法。另请参阅ndarray.np.sort   信息。 mergesort是唯一稳定的算法。对于DataFrame,   此选项仅在对单个列或标签进行排序时适用。


更新:正如@ALollz正确指出的那样,最好先将所有值都转换为小写,然后再进行排序(即,否则,“ Bird”将放在“ aligator”之前结果):

df['temp'] = df['Type'].str.lower()
df = df.sort_values(by='temp', kind='mergesort')
df = df.drop('temp', axis=1) 

答案 1 :(得分:1)

df.sort_values(by=['Type']) [1]

您可以执行自己的排序功能[2],可以将string直接比较stringRow2

[1] https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.sort_values.html [2] Sort pandas DataFrame with function over column values