定义一个函数改变列值,并创建新数据集(Defining a function for changin

2019-09-30 01:29发布

我试图定义一个函数在那里将采取数据帧并更改列值创建多个新dataframes。

作为一个例子,从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

我试图创建多个二进制类实行一VS-所有分类。 因此,该函数将创建...

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。

有什么想法吗?

谢谢

Answer 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


文章来源: Defining a function for changing column values and creating new datasets