如何合并两张表中有值的列,无值的空列也要保留?

表2中的列,包含于表1中的列。表1中除了TimeStamp外,其它列均为空;需要将表2中有值的列合并到表1,同时,保留表1中的空列。共有4000多支股票,即4000多列,现在用的for循环做的,有没有效率更高的方法?

表1:
attachments-2021-10-KmHrhjRG616a3e7f156bd.jpg

表2:
attachments-2021-10-t7cqSMls616a3e86a4b9f.jpg

请先 登录 后评论

1 个回答

Juntao Wang

可以以表1作为最终结果模板,因为表1除了Timestamp列均为空,可以将表1比表2多出来的列取出,再添加到表2,并调整顺序。
示例代码如下:

Timestamp = 2014.01.06T09:30:03.000 2014.01.06T09:30:06.000 2014.01.06T09:30:09.000 2014.01.06T09:30:12.000 2014.01.06T09:30:15.000 2014.01.06T09:30:18.000 2014.01.06T09:30:21.000 2014.01.06T09:30:24.000 2014.01.06T09:30:27.000 2014.01.06T09:30:30.000
t1 = table(Timestamp)
t1.addColumn(`SH600000, DOUBLE)
t1.addColumn(`SH600519, DOUBLE)
t1.addColumn(`SH600001, DOUBLE)

Timestamp = 2014.01.06T09:30:03.000 2014.01.06T09:30:06.000 2014.01.06T09:30:09.000 2014.01.06T09:30:12.000 2014.01.06T09:30:15.000 2014.01.06T09:30:18.000 2014.01.06T09:30:21.000 2014.01.06T09:30:24.000 2014.01.06T09:30:27.000 2014.01.06T09:30:30.000
SH600000 = 9.3 9.34 9.34 9.31 9.31 9.3 9.3 9.3 9.31 9.29
SH600519 = 122.88 122.88 122.88 122.88 122.88 122.88 122.80 122.80 122.80 122.80
t2 = table(Timestamp, SH600000, SH600519)

cols_missing = t1.colNames()[not t1.colNames() in t2.colNames()]
t2.addColumn(cols_missing, take(DOUBLE, cols_missing.size()))
t2.reorderColumns!(t1.colNames())
请先 登录 后评论