在Pandas DataFrame中对列进行排序

魔鬼

我有一个带有列标题“ DIV3,DIV4,DIV5 ... DIV30”的数据框

我的问题是大熊猫将以以下方式对列进行排序:

 DIV10, DIV11, DIV12..., DIV3, DIV4, DIV5

有没有办法将数字排列在第一位?IE:

 DIV3, DIV4, DIV5... DIV30
算了吧

您可以通过按“人类顺序”进行排序来解决此问题

import re
import pandas as pd
def natural_keys(text):
    '''
    alist.sort(key=natural_keys) sorts in human order
    http://nedbatchelder.com/blog/200712/human_sorting.html
    (See Toothy's implementation in the comments)
    '''
    def atoi(text):
        return int(text) if text.isdigit() else text

    return [atoi(c) for c in re.split('(\d+)', text)]

columns = ['DIV10', 'DIV11', 'DIV12', 'DIV3', 'DIV4', 'DIV5']    
df = pd.DataFrame([[1]*len(columns)], columns=columns)
print(df)
#    DIV10  DIV11  DIV12  DIV3  DIV4  DIV5
# 0      1      1      1     1     1     1

df = df.reindex(columns=sorted(df.columns, key=natural_keys))
print(df)

产量

   DIV3  DIV4  DIV5  DIV10  DIV11  DIV12
0     1     1     1      1      1      1

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

根据列值对具有MultiIndex的pandas DataFrame进行排序

如何按两列或更多列对python pandas中的dataFrame进行排序?

对Pandas Dataframe列中的列表进行排序

Pandas Dataframe列值的排序和排序

Pandas Dataframe按列排序

Python Pandas:对列进行排序

在Pandas Dataframe中的列和行上进行迭代

插入DataFrame列并根据PySpark或Pandas中的另一列进行排序

按特定顺序对Pandas DataFrame中的列进行排序

如何使用字符串列表对Pandas Dataframe中的列进行排序

在Pandas DataFrame中首先对包含字符串的列进行排序

pandas dataframe根据列总数对列进行排序

对pandas数据框中的多个文本列的值进行排序

对两列进行排序,并使用pandas为数据帧中的排序值创建新列

使用python sort函数对Pandas DataFrame中的值进行排序

按另一个数据框中的一列对pandas DataFrame进行排序-Pandas

根据一列的排序对多个Pandas Dataframe列进行排序

按多列和重复索引对pandas DataFrame进行排序

按列中的名称对pandas DataFrame中的数据进行排序

在Pandas中对包含字符串的列进行排序

Pandas DataFrame 对每一列进行排序

根据列值对 Pandas Dataframe 进行排序

在 Pandas DataFrame 中按逗号数对列进行排序

在 Pandas 中对 DataFrame 进行排序和切片

对 Pandas 数据框中的特定列进行排序

基于pandas中的多个条件对DataFrame进行排序

使用带有列表的列对 Pandas DataFrame 进行排序

给定该列中已排序的值列表,如何在该列上对 Pandas DataFrame 进行排序?

在 Pandas Python 中按两列对值进行排序