首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据词典化顺序一次对列中的5个元素进行排序

根据词典化顺序一次对列中的5个元素进行排序
EN

Stack Overflow用户
提问于 2021-07-06 17:42:42
回答 2查看 21关注 0票数 0

总之,我想一次为每组5个元素排序一列。我有一个这样的数据框架:

代码语言:javascript
复制
Col1 Col2  Col3
1    data   abcd
2    data2  cda
3    data3  dcv
4    data4  cvda
5    data5  b
6    data6  abcd
7    data7  dcv
8    data8  cda
9    data9  cvda
10   data10 b

我想是这样的:

代码语言:javascript
复制
Col1 Col2  Col3
1    data   abcd
2    data5  b 
3    data2  cda 
4    data4  cvda
5    data3  dcv
6    data6  abcd
7    data10 b
8    data8  cda
9    data9  cvda
10   data7  dcv

我想知道col3中每组5个元素的字典序顺序。怎样才能得到这个结果呢?

EN

回答 2

Stack Overflow用户

发布于 2021-07-06 17:49:52

Faster groupby with sort_values解决方案是按2列排序,这是通过整数除以5创建的另一列

代码语言:javascript
复制
a = np.arange(len(df))
df = (df.assign(new = a // 5)
        .sort_values(['new','Col3'], ignore_index=True)
        .drop('new', axis=1)
        .assign(Col1 = a + 1))
print (df)
   Col1    Col2  Col3
0     1    data  abcd
1     2   data5     b
2     3   data2   cda
3     4   data4  cvda
4     5   data3   dcv
5     6   data6  abcd
6     7  data10     b
7     8   data8   cda
8     9   data9  cvda
9    10   data7   dcv
票数 2
EN

Stack Overflow用户

发布于 2021-07-06 17:51:26

另一个版本:

代码语言:javascript
复制
print(
    df.groupby(df.index // 5)
    .apply(lambda x: x.sort_values("Col3"))
    .reset_index(drop=True)
)

打印:

代码语言:javascript
复制
   Col1    Col2  Col3
0     1    data  abcd
1     5   data5     b
2     2   data2   cda
3     4   data4  cvda
4     3   data3   dcv
5     6   data6  abcd
6    10  data10     b
7     8   data8   cda
8     9   data9  cvda
9     7   data7   dcv
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68268149

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档