使用Power Query M

时间:2018-03-09 16:43:53

标签: powerbi powerquery m

使用Power Query" M"如何将包含离散值的分类列转换为多个" dummy"列?我来自Python世界,有几种方法可以做到这一点,但下面有一种方法:

>>> import pandas as pd
>>> dataset = pd.DataFrame(list('ABCDACDEAABADDA'),
               columns=['my_col'])
>>> dataset
   my_col
0       A
1       B
2       C
3       D
4       A
5       C
6       D
7       E
8       A
9       A
10      B
11      A
12      D
13      D
14      A
>>> pd.get_dummies(dataset)
    my_col_A  my_col_B  my_col_C  my_col_D  my_col_E
0          1         0         0         0         0
1          0         1         0         0         0
2          0         0         1         0         0
3          0         0         0         1         0
4          1         0         0         0         0
5          0         0         1         0         0
6          0         0         0         1         0
7          0         0         0         0         1
8          1         0         0         0         0
9          1         0         0         0         0
10         0         1         0         0         0
11         1         0         0         0         0
12         0         0         0         1         0
13         0         0         0         1         0
14         1         0         0         0         0

1 个答案:

答案 0 :(得分:2)

有趣的问题。这是我发现的一种简单,可扩展的方法:

  1. 创建所有列的自定义列(添加列>自定义列>公式= 1)。

  2. 添加索引列(添加列>索引列)。

  3. 在自定义列上进行透视(选择my_col>转换>透视列)。

  4. 将空值替换为0(选择所有列>转换>替换值)。

  5. 以下是此过程的M代码:

        #"Added Custom" = Table.AddColumn(#"Previous Step", "Custom", each 1),
        #"Added Index" = Table.AddIndexColumn(#"Added Custom", "Index", 0, 1),
        #"Pivoted Column" = Table.Pivot(#"Added Index", List.Distinct(#"Added Index"[my_col]), "my_col", "Custom"),
        #"Replaced Value" = Table.ReplaceValue(#"Pivoted Column",null,0,Replacer.ReplaceValue,Table.ColumnNames(#"Pivoted Column"))
    

    完成上述操作后,您可以根据需要删除索引列。