数据帧索引中混合整数和字符串的自定义排序

2021-02-25 21:08:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个熊猫的数据帧,我需要重新索引到一个特定的时尚。有几个编号的索引,但最后一个是字符串。如果不包含字符串,索引按数字顺序排列,1-20就可以了。在

但是,只要我包含字符串索引,顺序就会切换到字母数字(1,11,12。。。18、19、2、20、3、4等)。有没有什么方法可以让我正确地以数字方式组织列表,然后在字符串索引中添加元素而不改变列表的组织方式?在

[编辑]:

意识到我自己的缺点。我想我已经包括了数据帧在构造之后被转换成html安全表(DataTable)并显示在网页上。这可能是我现在遇到的问题的原因,尽管对此问题的任何见解都是受欢迎的。在

我正在查看的数据帧的一个示例:

          Column 1
0       Value 1
1       Value 2
2       Value 3
3       Value 4
    ...
18      Value 19
19      Value 20
string  Value 21
2条回答
网友
1楼 ·

以下几点应该行得通:

new_index = list(df.index)

new_index[-1] = 'string'

df.index=new_index

例如:

^{pr2}$

返回重新索引的数据集:

>>> df
           0
0       0.665922
1       0.591298
2       0.274722
3       0.561243
string  0.382927
网友
2楼 ·

有一种方法。您可以将数字索引和非数字索引分开,并分别对它们进行排序。在

df = pd.DataFrame({1: ['Val1', 'Val2', 'Val3', 'Val4', 'Val5']},
                  index=['0', '1', '11', '2', 'string'])

order1 = sorted((x for x in df.index if x.isdigit()), key=lambda i: int(i))
order2 = sorted(x for x in df.index if not x.isdigit())

df = df.loc[order1+order2]

#            1
# 0       Val1
# 1       Val2
# 2       Val3
# 11      Val4
# string  Val5

相关问题