按字母顺序对第一个,第二个,第三个字符排序索引

时间:2016-09-13 14:32:39

标签: python sorting pandas dataframe

我的df看起来像这样:

<ul class="thumbs">
  <li style="display: none;">Element 1</li>
  <li style="display: none;">Element 2</li>
  <li style="display: none;">Element 3</li>
  <li style="display: none;">Element 4</li>
  <li style="display: none;">Element 5</li>
</ul>

var $el = $('.thumbs li');
var elStyle = $el.map(function() {
   return $(this).attr('style');
});

console.log(elStyle);

我想把它看起来像这样,

df = pd.DataFrame({'val': [0, 0, 0, 1, 0, 0, 0]}, 
                  index=['13th str', '3SAT', 'ARD', 
                         'ARD Dritte', 'AXNAction', 'Animal', 'bb'])
            val
13th str      0
3SAT          0
ARD           0
ARD Dritte    1
AXNAction     0
Animal        0
bb            0

注意 - &#39;动物&#39;已经转移了地方。

如果所有首字母都相同,则查看下一个字符,依此类推。

以下是我尝试过的但没有奏效的内容:

            val
13th str      0
3SAT          0
Animal        0
ARD           0
ARD Dritte    1
AXNAction     0
bb            0

2 个答案:

答案 0 :(得分:2)

您的索引正确排序,因为大写字符在小写之前排序,这就是您的尝试失败的原因,您可以按照您希望的方式对您添加具有小写索引值的临时列进行排序,按此列排序然后删除它:

In [155]:
df['labels'] = df.index.str.lower()
df = df.sort_values('labels').drop('labels', axis=1)
df

Out[155]:
            val
13th str      0
3SAT          0
Animal        0
ARD           0
ARD Dritte    1
AXNAction     0
bb            0

答案 1 :(得分:2)

您可以对索引using a custom key function进行排序:

In [22]: df = pd.DataFrame({'val': [0, 0, 0, 1, 0, 0, 0]}, 
              index=['13th str', '3SAT', 'ARD', 
                     'ARD Dritte', 'AXNAction', 'Animal', 'bb'])


In [23]: df

Out[23]: 

        val

13th str      0
3SAT          0
ARD           0
ARD Dritte    1
AXNAction     0
Animal        0
bb            0


In [24]: df.index = sorted(df.index.values, key=lambda s: s.lower())


In [25]: df

Out[25]: 
        val
13th str      0
3SAT          0
Animal        0
ARD           1
ARD Dritte    0
AXNAction     0
bb            0