【问题标题】: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) 

【讨论】:

    【解决方案2】:
    df.sort_values(by=['Type']) [1]
    

    你可以做你自己的排序函数[2],字符串可以直接比较 stringRow2

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

    【讨论】:

    • 这没有给出所需的输出...数据中的大小写存在问题
    猜你喜欢
    • 2021-10-08
    • 1970-01-01
    • 1970-01-01
    • 2014-12-29
    • 2019-04-12
    • 2015-11-06
    • 2014-09-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多