js 将一个集合中相同的数据合到一起存入另一个集合中
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js 将一个集合中相同的数据合到一起存入另一个集合中相关的知识,希望对你有一定的参考价值。
如题 例如:集合中有这么一组数据 1,1,1,1,2,2,2,3,3,3,3,1,1,1,1,合完后放入另一个集合中的数据为1,2,3,1。 顺序不能改变。小弟新人一个,求大神帮帮忙!
参考技术A var list = [1,1,1,2,2,3,3,3,3,3,1,1,2,4,4,4];var last = -1;
var result = [];
for(var i = 0;i<list.length;i++)
if(i==0&&last==-1)
last = list[i]
result.push(list[i]);
continue;
var temp = list[i];
if(temp!=last)
last = temp;
result.push(list[i]);
console.log(result);追问
大神牛批! 我再问一哈,如果合并之前的集合数据是[num:1,id:222,num:1,id:222,num:1,id:333,num:1,id:333],合并之后[num:2,id:222,num:2,id:333],就是按照id看是否相同如果相同把num加到一起 id不变 和到一起
追答//第二个问题就换思路了
var list = [num:1,id:222,num:1,id:222,num:1,id:333,num:1,id:333,num:5,id:222,num:1,id:444];
var last = -1;
var lastNum = 0;
var result = [];
while(list.length>0)
for(var i = 0;i<list.length;i++)
if(i==0&&last==-1)
last = list[i].id;
lastNum = list[i].num;
list.splice(i,1);
i--;
continue;
var temp = list[i];
if(temp.id==last)
lastNum=lastNum+ temp.num;
list.splice(i,1);
i--;
result.push( num:lastNum,id:last );
last = -1;
lastNum = 0;
console.log(result);
是这样的大神,按照你给的list,其实想要的结果是[num:2,id:222,num:2,id:333,num:5,id:222,num:1,id:444],还是顺序不变,这样的话可以实现吗?
追答//百度说我字数太多。只复制了循环部分
for(var i = 0;i<list.length;i++)
if(i+1 == list.length)
if(last==-1)
alert("逻辑上不可能进入此处");
else
var temp = list[i];
if(temp.id==last)
lastNum=lastNum+ temp.num;
result.push( num:lastNum,id:last );
else if(temp.id!=last)
result.push( num:lastNum,id:last );
result.push( num:temp.num,id:temp.id );
break;
else
var temp = list[i];
if(last==-1)
last = temp.id;
lastNum = temp.num;
continue;
else
if(temp.id==last)
lastNum=lastNum+ temp.num;
else if(temp.id!=last)
result.push( num:lastNum,id:last );
last = temp.id;
lastNum = temp.num;
大神666,大神牛批,方便加一个QQ吗?
本回答被提问者采纳将 3 个数据集合并在一起
【中文标题】将 3 个数据集合并在一起【英文标题】:Merging 3 datasets together 【发布时间】:2020-05-07 02:11:42 【问题描述】:我需要将 3 个数据集 (csv.) 合并在一起以制作动态图表。 它们都以国家为列,以年份为行。
其他两个数据集看起来相同,除了一个是人口,另一个是收入。我试着环顾四周,看看我能找到什么来得到我想要的数据,但似乎找不到任何东西。
我尝试使用 pd.concat,但它只是一个接一个地列出,而不是在单独的列中。
合并所有 3 个数据集以准备使用 pd.concat 制作动态图
mc_data = pd.concat([df2, pop_data3, income_data3], sort = True)
任何形式的帮助将不胜感激
编辑:我按照建议使用了代码,但是我得到了一堆不应该存在的 NaN 值
mc_data = pd.concat([df2, pop_data3, income_data3], axis = 1, keys = ['df2', 'pop_data3', 'income_data3'])
EDIT2:当我在它们上运行 .info 和 .index 时,我得到了这些结果。可能与数据类型有关吗?还是列条目?
【问题讨论】:
【参考方案1】:来自this answer:
您可以使用concat
来做到这一点(keys
参数将创建分层列索引):
pd.concat([df2, pop_data3, income_data3], axis=1, keys=['df2', 'pop_data3', 'income_data3'])
【讨论】:
这有效,但我现在有不应该存在的 NaN 值 这意味着数据集不包含那些年份的值。例如df2
没有年份 1970 -1974,income_data3
没有年份 2011-2015。
确实如此,当我在合并之前查看 df2 时,它具有 1970 年至 2015 年每年每个国家/地区的值
打印什么df2.info()
、df2.index
、income_data3.info()
、income_data3.index
?
我在原始问题的输出中添加了一个屏幕截图,它可能是影响它的数据类型吗?还是列?以上是关于js 将一个集合中相同的数据合到一起存入另一个集合中的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 5.7:基于多个键检测集合中的重复项(完成)但如何将重复项移动到另一个集合?