【问题标题】:Sorting Dataframe using pandas. Keeping columns intact使用熊猫对数据框进行排序。保持列完好无损
【发布时间】:2018-10-25 00:25:29
【问题描述】:
如下图所示,我想按字母顺序按Type 对聊天进行排序。但是,我不想在每个Chat name 中弄乱[Date , User_id] 的顺序。鉴于我在左侧有输入数据框,我应该怎么做? (在 python 中使用 Pandas)
【问题讨论】:
标签:
python
pandas
sorting
dataframe
【解决方案1】:
您想使用 a stable sorting algorithm 对值进行排序,即合并排序:
df.sort_values(by='Type', kind='mergesort')
来自链接的答案:
如果两个对象相等,则称排序算法是稳定的
键在排序输出中出现的顺序与它们在
输入要排序的数组。
来自pandas docs:
kind : {‘quicksort’, ‘mergesort’, ‘heapsort’},默认‘quicksort’
排序算法的选择。另请参阅 ndarray.np.sort 了解更多信息
信息。归并排序是唯一稳定的算法。对于数据帧,
此选项仅在对单个列或标签进行排序时应用。
更新:正如@ALollz 正确指出的那样,最好先将所有值转换为小写然后进行排序(即,否则“Bird”将被放置在“aligator”之前结果):
df['temp'] = df['Type'].str.lower()
df = df.sort_values(by='temp', kind='mergesort')
df = df.drop('temp', axis=1)