gpt4 book ai didi

Excel Power Query - 如何在 power query 的同一个表中追加列?

转载 作者:行者123 更新时间:2023-12-04 22:23:26 30 4
gpt4 key购买 nike

也许这是一个非常简单的问题,但我试图弄清楚如何做到这一点,因为我有数百列以及手动完成的想法,将它们分成单独的查询然后 append 它们似乎并不非常实用。

我一直在处理一个查询,它以以下格式返回值:

Date | Time  | Value | Time | Value...

A | B | C | D | E...

但我需要将其转换为:
Date | Time | Value

A | B | C

A | D | E

谢谢您的帮助!

最佳答案

不使用自定义代码:
使用 Data ... From Table/Range... 将数据加载到 powerquery 中
右键单击日期列,选择取消透视其他列
添加列...索引列...使用默认列名索引
添加列...自定义列...使用公式 =Number.Mod([索引],2) 和默认名称自定义
这会将索引列转换为交替的 0/1
(假设您的第二列名为 Value.1)添加列...自定义列...使用公式 =#"添加自定义"{[索引]+1}[Value.1] 和默认名称 Custom.1
这会将当前行下方的值放入当前行
通过单击自定义列旁边的箭头并删除 1 旁边的 [x] 来删除交替行
单击选择属性、索引和自定义列,右键单击删除列
加载并关闭
假设您的数据作为范围 Table1 加载,您可以使用此代码,粘贴到 Home...Advanced...

let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Unpivoted Other Columns" = Table.UnpivotOtherColumns(Source, {"Date"}, "Attribute", "Value.1"),
#"Added Index" = Table.AddIndexColumn(#"Unpivoted Other Columns", "Index", 0, 1),
#"Added Custom" = Table.AddColumn(#"Added Index", "Custom", each Number.Mod([Index],2)),
#"Added Custom1" = Table.AddColumn(#"Added Custom", "Custom.1", each #"Added Custom"{[Index]+1}[Value.1]),
#"Filtered Rows" = Table.SelectRows(#"Added Custom1", each ([Custom] = 0)),
#"Removed Columns" = Table.RemoveColumns(#"Filtered Rows",{"Attribute", "Index", "Custom"})
in #"Removed Columns"
如果您愿意使用一些自定义代码,这将创建两个表,一个具有奇数列的表和一个具有偶数列的表,对它们中的每一个进行逆透视,为两者添加一个索引,然后将它们合并回该索引上。适用于任意数量的列,对于较大的数据集可能比上面更快。
假设您的数据作为范围 Table1 加载,您可以使用此代码,粘贴到 Home...Advanced...
let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
OddUnpivot= Table.AddIndexColumn(Table.UnpivotOtherColumns(Table.RemoveColumns(Source,List.RemoveFirstN(List.Alternate(Table.ColumnNames(Source),1,1,1),1)), {"date"}, "Attribute", "Value"), "Index", 0, 1),
EvenUnpivot= Table.AddIndexColumn(Table.UnpivotOtherColumns(Table.RemoveColumns(Source,List.Alternate(Table.ColumnNames(Source),1,1)), {"date"}, "Attribute", "Value"), "Index", 0, 1),
#"Merged Queries" = Table.NestedJoin(OddUnpivot,{"Index"},EvenUnpivot,{"Index"},"Table2",JoinKind.LeftOuter),
#"Expanded Table" = Table.ExpandTableColumn(#"Merged Queries", "Table2", {"Value"}, {"Value.1"}),
#"Removed Columns" = Table.RemoveColumns(#"Expanded Table",{"Attribute", "Index"})
in #"Removed Columns"
稍后更新:
更一般地说,我决定我更喜欢这种方法
let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],     
// 1 base columns, then groups of 2 columns, stack them
Combo = List.Transform(List.Split(List.Skip(Table.ColumnNames(Source),1),2), each List.FirstN(Table.ColumnNames(Source),1) & _),
#"Added Custom" =List.Accumulate(
Combo,
#table({"Column1"}, {}),
(state,current)=> state & Table.Skip(Table.DemoteHeaders(Table.SelectColumns(Source, current)),1)
)
in #"Added Custom"

关于Excel Power Query - 如何在 power query 的同一个表中追加列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60391541/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com