考虑数据框 df
df = pd.DataFrame(dict(
A=list('XXYYXXYY'),
B=range(8, 0, -1)
))
print(df)
A B
0 X 8
1 X 7
2 Y 6
3 Y 5
4 X 4
5 X 3
6 Y 2
7 Y 1
使用'X'
按列定义的组'A'
,我想[8, 7, 4, 3]
按预期进行排序[3, 4, 7, 8]
。但是,我想将这些行保留在原处。
A B
5 X 3 <-- Notice all X are in same positions
4 X 4 <-- However, `[3, 4, 7, 8]` have shifted
7 Y 1
6 Y 2
1 X 7 <--
0 X 8 <--
3 Y 5
2 Y 6
您可以transform
用来取回新的所需索引顺序,然后用于reindex
重新排列DataFrame:
# Use transform to return the new ordered index values.
new_idx = df.groupby('A')['B'].transform(lambda grp: grp.sort_values().index)
# Reindex.
df = df.reindex(new_idx.rename(None))
如果需要,可以将上面的两行合并为一条长行。
结果输出:
A B
5 X 3
4 X 4
7 Y 1
6 Y 2
1 X 7
0 X 8
3 Y 5
2 Y 6
请注意,如果您不关心维护旧索引,则可以直接从中重新分配transform
:
df['B'] = df.groupby('A')['B'].transform(lambda grp: grp.sort_values())
产生:
A B
0 X 3
1 X 4
2 Y 1
3 Y 2
4 X 7
5 X 8
6 Y 5
7 Y 6
Hadoop MapReduce的默认行为是在分区内对schffle键进行排序,但不是跨分区(它是使键跨部分排序的总排序) 我想问如何使用Spark RDD实现同样的事情(分区内排序,但不跨分区排序) < li>RDD的< code>sortByKey方法是进行总排序 < li>RDD的< code > repartitionandsorttwithinpartitions 在分区内进行排序,而不
假设我有一个
问题内容: 我有一个需要在JavaScript中排序的字符串数组,但不区分大小写。如何执行呢? 问题答案: 在(几乎:)单线 导致 而 结果是
问题内容: 在AngularJS部分中,我如下遍历条目列表: 的内容有一些换行符,AngularJS会忽略它们。如何使其保留换行符? 问题答案: 这只是基本的HTML。AngularJS对此不会做任何改变。您可以改用标签: 或使用CSS: 如果包含HTML代码,则可以使用: 不要忘记包括ngSanitize:
我需要从一个Hive表中读取数据并将其插入到另一个Hive表中。两个表的架构是相同的。该表按日期分区 步骤1:从Spark的源表中读取数据。 第 2 步:按列(国家、日期)和分区数重新分区为 4。 我只得到每个国家代码1个分区
问题内容: 给定一个记录某些书籍使用情况的数据框,如下所示: 我需要获取所有书籍的数量,保留其他列并获取以下内容: 如何才能做到这一点? 谢谢! 问题答案: 您需要以下内容: 在您的情况下,“名称”,“类型”和“ ID”列的值匹配,因此我们可以对它们进行调用,然后单击。 另一种方法是使用添加“ Count”列,然后调用: