【发布时间】:2021-07-30 04:19:57
【问题描述】:
这是一个简化的案例:
df = pd.DataFrame({'col1': [1, 1, 1, 2, 2, 2, 3, 3, 3], 'col2': ['a', 'b', 'c', 'A', 'C', 'B', 'red', 'blue', 'greed']})
我想参考 col1 对 col2 进行子集置换。例如,只置换 col2 中的“a”、“b”、“c”,因为它们属于 col1 中的类别 1。并在类别 2 中排列“A”、“C”、“B”,然后在类别 3 中排列这些颜色。输出如下所示:
col1 col2
0 1 b
1 1 c
2 1 a
3 2 A
4 2 B
5 2 C
6 3 blue
7 3 red
8 3 green
因为 col1 中有数千个类别,我在想是否有一种简单的方法,而不是一个一个循环。谢谢。
【问题讨论】:
-
这个的最终用途是什么?你需要 col1 像原始数据一样排序吗?
-
Col2 实际上是 y 变量。我想为 col1 中的每个组构建 y 加扰模型。 col1 的顺序不必和原来的一样。
-
因此,如果您不介意 col1 的顺序,并且只希望 col2 中值的出现顺序不同,只要它们与 col1 的相同值相关联,也许可以尝试
df.sample(frac=1) -
随机抽样不会改变标签。例如,第 1 组 (col1) 中的第一项 0 在 col2 中的值为 b。我想要做的是将 b 更改为第 1 组中的任何值(a、b、c)。
标签: pandas subset permutation