Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python按sum分组这样怎么办_Python_Group By - Fatal编程技术网

python按sum分组这样怎么办

python按sum分组这样怎么办,python,group-by,Python,Group By,说明: 我从mongodb获得的数据如下所示: { "_id" : "5620150715", "timeStamp" : NumberLong("1436889600000"), "userId" : 56, "WorldAmounts" : [ { "count" : NumberLong(10), "Address" : "aaa" }, { "count" : NumberLong(20), "Address" : "bbb" } ], "Amounts" : [ { "cou

说明: 我从mongodb获得的数据如下所示:

     { "_id" : "5620150715", "timeStamp" : NumberLong("1436889600000"), "userId" : 56, "WorldAmounts" : [ { "count" : NumberLong(10), "Address" : "aaa" }, { "count" : NumberLong(20), "Address" : "bbb" } ], "Amounts" : [ { "count" : NumberLong(10), "ipAddress" : "aaa" }, { "count" : NumberLong(20), "Address" : "bbb" } ], "date" : "20150715", "localAmounts" : [ ] }
[{'userId':1, 'localA': [{'address':'A','count':7},{'address':'B', 'count':10}], 'localB': [{'address':'X','count':5}], 'localALL':[{'address':'A','count':7},{'address':'B', 'count':10},{'address':'X','count':5}]},{'userId':2, 'localA': [{'address':'A','count':7},{'address':'B', 'count':10}], 'localB': [{'address':'X','count':5}], 'localALL':[{'address':'A','count':7},{'address':'B', 'count':10},{'address':'X','count':5}]},{'userId':1, 'localA': [{'address':'C','count':7}], 'localB': [{'address':'X','count':5}], 'localALL':[{'address':'A','count':7},{'address':'B', 'count':10},{'address':'X','count':5}]}]
问题:
如何按所有项目进行分组,键是“
userId
”和
worldaments
中的“
地址

测试数据如下所示:

     { "_id" : "5620150715", "timeStamp" : NumberLong("1436889600000"), "userId" : 56, "WorldAmounts" : [ { "count" : NumberLong(10), "Address" : "aaa" }, { "count" : NumberLong(20), "Address" : "bbb" } ], "Amounts" : [ { "count" : NumberLong(10), "ipAddress" : "aaa" }, { "count" : NumberLong(20), "Address" : "bbb" } ], "date" : "20150715", "localAmounts" : [ ] }
[{'userId':1, 'localA': [{'address':'A','count':7},{'address':'B', 'count':10}], 'localB': [{'address':'X','count':5}], 'localALL':[{'address':'A','count':7},{'address':'B', 'count':10},{'address':'X','count':5}]},{'userId':2, 'localA': [{'address':'A','count':7},{'address':'B', 'count':10}], 'localB': [{'address':'X','count':5}], 'localALL':[{'address':'A','count':7},{'address':'B', 'count':10},{'address':'X','count':5}]},{'userId':1, 'localA': [{'address':'C','count':7}], 'localB': [{'address':'X','count':5}], 'localALL':[{'address':'A','count':7},{'address':'B', 'count':10},{'address':'X','count':5}]}]
结果如下: 如果“
userId
”是diff not use groupby,
localALL
LocalA+LocalB
,如果相同的“
address
”值,则加上“
计数
”的和,否则附加本地值

[{'userId':1, 'localA': [{'address':'C','count':7},{'address':'A','count':7},{'address':'B', 'count':10}], 'localB': [{'address':'X','count':10}], 'localALL':[{'address':'A','count':7},{'address':'B', 'count':10},{'address':'X','count':10}]},
{'userId':2, 'localA': [{'address':'A','count':7},{'address':'B', 'count':10}], 'localB': [{'address':'X','count':5}], 'localALL':[{'address':'A','count':7},{'address':'B', 'count':10},{'address':'X','count':5}]}
]
thx alfasin的建议是最好的简单示例,如下所示:

     { "_id" : "5620150715", "timeStamp" : NumberLong("1436889600000"), "userId" : 56, "WorldAmounts" : [ { "count" : NumberLong(10), "Address" : "aaa" }, { "count" : NumberLong(20), "Address" : "bbb" } ], "Amounts" : [ { "count" : NumberLong(10), "ipAddress" : "aaa" }, { "count" : NumberLong(20), "Address" : "bbb" } ], "date" : "20150715", "localAmounts" : [ ] }
[{'userId':1, 'localA': [{'address':'A','count':7},{'address':'B', 'count':10}], 'localB': [{'address':'X','count':5}], 'localALL':[{'address':'A','count':7},{'address':'B', 'count':10},{'address':'X','count':5}]},{'userId':2, 'localA': [{'address':'A','count':7},{'address':'B', 'count':10}], 'localB': [{'address':'X','count':5}], 'localALL':[{'address':'A','count':7},{'address':'B', 'count':10},{'address':'X','count':5}]},{'userId':1, 'localA': [{'address':'C','count':7}], 'localB': [{'address':'X','count':5}], 'localALL':[{'address':'A','count':7},{'address':'B', 'count':10},{'address':'X','count':5}]}]
输入: [{'abs':1,'lad':[{'count':2,'desc':'A'},{'count':3,'desc':4}]}, {'abs':1,'lad':[{'count':3,'desc':'A'},{'count':1,'desc':5}]

输出:


[{'abs':1,'lst':[{'count':5,'desc':3},{'count':3,'desc':4},{'count':1,'desc':5}]}]

TMI,试着构造一个简单的例子,其中包括输入+请求的输出。我认为最好的简单例子是这样的:输入:[{'abs'abs':1,'lad':[{'count':2,'desc':'a'},{'count 3,'desc':4},{'abs 1,'lad':[{'count':3,'desc':'A'},{'count':1,'desc':5}]}]和输出:[{'abs':1,'lst':[{'count':5,'desc':3},{'count':3,'desc':4},{'count':1,'desc':5}]}]
collections.defaultdict(列表)
在这里可能会有所帮助。通过for循环运行输入数据结构以填充输出数据结构。但是每个项目都在mongodb中,我可以获取光标并使用iter逐个获取数据