定义用于更改列值和创建新数据集的函数

时间:2018-08-19 01:54:22

标签: python pandas function dataframe classification

我正在尝试定义一个函数,该函数将采用一个数据框并更改列中的值以创建多个新数据框。

以df1为例,如下所示:

df1:

  class    colB    colC
0   1      1b      1c
1   2      2b      2c
2   3      3b      3c
3   4      4b      4c
4   5      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之间的增量值。

有什么想法吗?

谢谢

1 个答案:

答案 0 :(得分:1)

使用np.identity(我将您的列名更改为class_,因此它没有使用受保护的关键字):

arr = np.identity(len(df1))
arr[arr==0] = -1

dfs = [df1.assign(class_=arr[:, i]) for i in range(len(df1))]

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

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

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

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

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

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