给定数据帧
Column1 Column2 Column3
0 a foo 1
1 a bar 2
2 b baz 12
3 b foo 4
4 c bar 6
5 c foo 3
6 c baz 7
7 d foo 9
我想按Column1分组,使用任意的优先顺序将值从column3中保留
例如,如果优先顺序为:
然后我希望输出显示为
Column2
Column1
a 2
b 12
c 7
d 9
“a”组保留“bar”值,因为“a”组没有“baz”,而“b”组保留“baz”值,依此类推
最优雅的方式是什么?现在,我正在应用一系列apply lambda来处理每一项,但感觉有些马虎
编辑: 如果进位跨越多个列怎么办
前
Column1 Column2 Column3 Column4
0 a foo john 1
1 a bar jim 2
2 b baz jack 12
3 b foo jim 4
4 c bar john 6
5 c foo john 3
6 c baz jack 7
7 d foo jack 9
如果第2列和第3列的优先顺序为:
然后我希望输出显示为
Column2 Column3
Column1
a jim 2
b jim 4
c baz 7
d foo 9
您可以使用
map
然后groupby+transform
尝试以下逻辑对于多列,使用与上述相同的逻辑进行编辑,方法如下:
您可以尝试将
Column2
转换为分类:输出:
如果对“Column2”中的所有值都有一个顺序,则可以在设置索引后使用
loc
来强制执行自定义顺序,然后drop_duplicates
只保留最高优先级在第二种情况下,如果需要跨多个列执行此操作,我们首先
melt
将Column2和Column3堆叠成一个长系列,其余的如下所示:相关问题 更多 >
编程相关推荐