使用 Power Query M 将分类列转换为虚拟列
Transform categorical column into dummy columns using Power Query 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)。
添加索引列(添加列 > 索引列)。
在自定义列上进行透视(select my_col
> 转换 > 透视列)。
将空值替换为 0(select 所有列 > 转换 > 替换值)。
下面是此过程的 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"))
完成上述操作后,您可以根据需要删除索引列。
使用 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)。
添加索引列(添加列 > 索引列)。
在自定义列上进行透视(select
my_col
> 转换 > 透视列)。将空值替换为 0(select 所有列 > 转换 > 替换值)。
下面是此过程的 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"))
完成上述操作后,您可以根据需要删除索引列。