gpt4 book ai didi

python - 将多个列值更改为二进制值

转载 作者:行者123 更新时间:2023-11-30 22:09:29 24 4
gpt4 key购买 nike

我以前问过这个问题,但我得到的答案并不像我想象的那样,所以我就在这里。

上一问题:Defining a function for changing column values and creating new datasets

我正在尝试定义一个函数,它将获取数据帧并更改列中的值以创建多个新数据帧。

作为示例,从 df1 看起来像:

  df1:

class colB colC
0 1 1b 1c
1 2 2b 2c
2 3 3b 3c
3 1 4b 4c
4 2 5b 5c

我正在尝试创建多个二进制类来实现一对多分类。所以这个函数会创建...

df2:
class colB colC
0 1 1b 1c
1 -1 2b 2c
2 -1 3b 3c
3 1 4b 4c
4 -1 5b 5c

df3:
class colB colC
0 -1 1b 1c
1 1 2b 2c
2 -1 3b 3c
3 -1 4b 4c
4 1 5b 5c

df4:
class colB colC
0 -1 1b 1c
1 -1 2b 2c
2 1 3b 3c
3 -1 4b 4c
4 -1 5b 5c

等等。所有唯一值都是1到120之间的增量值。

之前给出的答案 (np.identity) 的问题在于,它创建了将每个值视为 1 或 -1 的数据帧,而不是相应地将相同的值分类为同一类。

谢谢

最佳答案

使用np.whereunique的类似想法(再次重命名您的class列,这样它就不会覆盖内置名称):

dfs = [
df1.assign(class_=np.where(df1['class_'].eq(i), 1, -1)) for i in df1['class_'].unique()
]

for d in dfs:
print(d, end='\n\n')

class_ colB colC
0 1 1b 1c
1 -1 2b 2c
2 -1 3b 3c
3 1 4b 4c
4 -1 5b 5c

class_ colB colC
0 -1 1b 1c
1 1 2b 2c
2 -1 3b 3c
3 -1 4b 4c
4 1 5b 5c

class_ colB colC
0 -1 1b 1c
1 -1 2b 2c
2 1 3b 3c
3 -1 4b 4c
4 -1 5b 5c

关于python - 将多个列值更改为二进制值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51914247/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com