我有一个时间序列的数据集(df)如下:
arg3
想法是将其转换为:
date symbol close
09/01/2018 ACA 132.1
10/01/2018 ACA 134.4
...
28/04/2013 BA 22.12
...
21/01/2016 DIL 180.01
...
因此,在第一列上花费最长的时间,并匹配其他列的收盘价。我想可以用date ACA BA DIL
28/04/2013 NaN 22.12 NaN
...
21/01/2016 NaN 23 180.01
...
...
...
10/01/2018 134.4 32.2 181.3
或VLOOKUP()
以某种方式完成。
有什么想法吗?
答案 0 :(得分:1)
您可以使用Powerquery执行此操作。
步骤1:在数据范围内选择一个填充的单元格Goto PowerQuery选项卡,如果在Excel 2016(并且已安装免费添加)或2016年的数据选项卡>数据>得到&变换>从表
第2步:确保将date
列格式化为日期
第3步:按升序排序date
列
第4步:选择symbol
列>转换标签>透视列
确保值部分正在使用Close
步骤5:根据需要重新排列列
第6步:关闭并 加载到页面
注意:您不要用NaN替换Null。导出到工作表时,这些单元格将为空白。
M代码:
let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"date", type date}, {"symbol", type text}, {"close", type number}}),
#"Sorted Rows" = Table.Sort(#"Changed Type",{{"date", Order.Ascending}}),
#"Pivoted Column" = Table.Pivot(#"Sorted Rows", List.Distinct(#"Sorted Rows"[symbol]), "symbol", "close", List.Sum),
#"Reordered Columns" = Table.ReorderColumns(#"Pivoted Column",{"date", "ACA", "BA", "DIL"})
in
#"Reordered Columns"