答案1
答案2
在这里,我使用 PowerQuery 从维基百科中提取数据,将其转换为您文章中的格式,然后将球员提取到新表中,并附上原始数据的链接。我之所以包括这一点,只是因为我这样做是为了获得与您相同的数据,这对我来说是一项有趣的练习,我希望这对其他人来说也很有趣。
要直接找到问题的答案,请向下滚动到答案如下以粗体文本。
首先,我使用数据>获取和转换数据>来自 Web,然后输入地址:
https://en.wikipedia.org/wiki/Squid_Game#Episodes
我选择 Episodes 表:
然后我单击“转换”。PowerQuery 中的数据如下所示:
由于 Wikipedia 表格的格式,每集的描述都会在其他列(编号、标题、导演、编剧、原始发布日期)中重复。每集有两行 - 第一行包含所有其他信息,第二行包含重复的描述。
还有第 6 列,其中第一行为空白,第二行有描述。
首先,我使用“添加列”>“索引列”>“从 1 开始”来添加索引:
现在,我添加一个列来指示索引是奇数还是偶数。我使用添加列、自定义列,如下所示:
现在我打开左侧的查询窗格,右键单击 Episodes 查询并选择“复制”。这将创建“Episodes (2)”。我右键单击它并将其重命名为 Descriptions。
现在,我根据 IndexIsOdd=FALSE 过滤描述查询。我删除了 Index 列。我将 Column6 重命名为“Description”,然后通过选择要删除的列,然后右键单击并使用“删除列”,删除除“Description”之外的所有列。然后,我添加一个新的 Index 列,再次从 1 开始。所以现在,我有这个:
现在,我返回“Episodes”查询并过滤 IndexIsOdd=TRUE。我删除了 Column6、Index 和 IndexIsOdd 列。我还将“No.”列的数据类型更改为“Whole Number”。
接下来,我使用“主页”>“合并查询”,并按如下方式配置它:
这给了我:
我单击“描述”顶部的双箭头并进行如下配置:
所以,现在我已经正确格式化了表格。
答案如下
为了获取玩家数量,我选择“描述”列并右键单击并使用“拆分列”>“按分隔符”,然后按如下方式配置:
在这里我输入了“Player”(注意最后的空格)作为分隔符。
结果:
现在有些行的描述以球员编号开头,而有些则不是。我将筛选相关行,然后将数字提取到新列中,然后在数字前面添加单词“Player”。
我添加了一个新的自定义列,配置如下:
公式:
if Value.Is(Value.FromText(Text.Start([Description],3)), type number) then "Player " & Text.Start([Description],3) else ""
现在我只需过滤“Player”列以排除空白,然后隐藏“Description”列。然后,在进行我可能想要(或不想要)的任何其他更改后,我使用 Home>Close & Load:
以下是描述查询:
let
Source = Web.Page(Web.Contents("https://en.wikipedia.org/wiki/Squid_Game#Episodes")),
Data1 = Source{1}[Data],
#"Changed Type" = Table.TransformColumnTypes(Data1,{{"No.", type text}, {"Title", type text}, {"Directed by", type text}, {"Written by", type text}, {"Original release date", type text}, {"Column6", type text}}),
#"Added Index" = Table.AddIndexColumn(#"Changed Type", "Index", 1, 1, Int64.Type),
#"Added Custom" = Table.AddColumn(#"Added Index", "IndexIsOdd", each Number.IsOdd([Index])),
#"Changed Type1" = Table.TransformColumnTypes(#"Added Custom",{{"IndexIsOdd", type logical}}),
#"Filtered Rows" = Table.SelectRows(#"Changed Type1", each ([IndexIsOdd] = false)),
#"Removed Columns" = Table.RemoveColumns(#"Filtered Rows",{"Index", "IndexIsOdd", "No.", "Title", "Directed by", "Written by", "Original release date"}),
#"Renamed Columns" = Table.RenameColumns(#"Removed Columns",{{"Column6", "Description"}}),
#"Added Index1" = Table.AddIndexColumn(#"Renamed Columns", "Index", 1, 1, Int64.Type)
in
#"Added Index1"
以及剧集查询:
let
Source = Web.Page(Web.Contents("https://en.wikipedia.org/wiki/Squid_Game#Episodes")),
Data1 = Source{1}[Data],
#"Changed Type" = Table.TransformColumnTypes(Data1,{{"No.", type text}, {"Title", type text}, {"Directed by", type text}, {"Written by", type text}, {"Original release date", type text}, {"Column6", type text}}),
#"Added Index" = Table.AddIndexColumn(#"Changed Type", "Index", 1, 1, Int64.Type),
#"Added Custom" = Table.AddColumn(#"Added Index", "IndexIsOdd", each Number.IsOdd([Index])),
#"Changed Type1" = Table.TransformColumnTypes(#"Added Custom",{{"IndexIsOdd", type logical}}),
#"Filtered Rows" = Table.SelectRows(#"Changed Type1", each ([IndexIsOdd] = true)),
#"Removed Columns" = Table.RemoveColumns(#"Filtered Rows",{"Column6", "Index", "IndexIsOdd"}),
#"Changed Type2" = Table.TransformColumnTypes(#"Removed Columns",{{"No.", Int64.Type}}),
#"Merged Queries" = Table.NestedJoin(#"Changed Type2", {"No."}, Descriptions, {"Index"}, "Descriptions", JoinKind.LeftOuter),
#"Expanded Descriptions" = Table.ExpandTableColumn(#"Merged Queries", "Descriptions", {"Description"}, {"Description"}),
#"Split Column by Delimiter" = Table.ExpandListColumn(Table.TransformColumns(#"Expanded Descriptions", {{"Description", Splitter.SplitTextByDelimiter("Player ", QuoteStyle.Csv), let itemType = (type nullable text) meta [Serialized.Text = true] in type {itemType}}}), "Description"),
#"Changed Type3" = Table.TransformColumnTypes(#"Split Column by Delimiter",{{"Description", type text}}),
#"Added Custom1" = Table.AddColumn(#"Changed Type3", "Player", each if Value.Is(Value.FromText(Text.Start([Description],3)), type number) then "Player " & Text.Start([Description],3) else ""),
#"Filtered Rows1" = Table.SelectRows(#"Added Custom1", each ([Player] <> "")),
#"Removed Columns1" = Table.RemoveColumns(#"Filtered Rows1",{"Description", "Directed by", "Written by", "Original release date"}),
#"Changed Type4" = Table.TransformColumnTypes(#"Removed Columns1",{{"Player", type text}})
in
#"Changed Type4"