总之,我想一次为每组5个元素排序一列。我有一个这样的数据框架:
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我想是这样的:
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个元素的字典序顺序。怎样才能得到这个结果呢?
发布于 2021-07-06 17:49:52
Faster groupby with sort_values解决方案是按2列排序,这是通过整数除以5创建的另一列
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发布于 2021-07-06 17:51:26
另一个版本:
print(
df.groupby(df.index // 5)
.apply(lambda x: x.sort_values("Col3"))
.reset_index(drop=True)
)打印:
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 dcvhttps://stackoverflow.com/questions/68268149
复制相似问题