2015-08-29 179 views
-2

的字典我有以下的解釋:添加元素列表

dic = {title: ['a', 'a', 'a', 'b', 'b', 'c', 'c'], avg1: [1, 2, 3, 4, 5, 6, 7], avg2: [2, 2, 3, 4, 7, 9, 7]} 

我想在列表中「AVG1」,並根據列表中的「標題」項「AVG2」添加的項目。得到的DIC將是:

dic = {title: ['a', 'b', 'c'], avg1: [6, 9, 13], avg2: [7, 11, 16]} 
+0

爲什麼這是被降級投票?這是一個明確的問題。 –

+0

雖然我還沒有投票,但我想這是因爲這讀起來有點像「請爲我編碼」這個問題。如果OP能解釋一些他們有困難的地方,這將是有用的。 – michaelrccurtis

回答

1

我建議你重新考慮你的數據結構,您存儲信息是一個有點尷尬的方式。下面可以做你想做的熊貓,但這是一個尷尬的使用熊貓(我的意思是特別是最後一行)

import pandas as pd 

>>> d = {title: ['a', 'a', 'a', 'b', 'b', 'c', 'c'], avg1: [1, 2, 3, 4, 5, 6, 7], avg2: [2, 2, 3, 4, 7, 9, 7]} 

>>> df = pd.DataFrame(d) 
>>> df 
    avg1 avg2 title 
    0  1  2  a 
    1  2  2  a 
    2  3  3  a 
    3  4  4  b 
    4  5  7  b 
    5  6  9  c 
    6  7  7  c 
>>> g = df.groupby('title') 

>>> g.avg1.apply(sum) 
title 
a   6 
b   9 
c  13 
Name: avg2, dtype: int64 

>>> g.avg2.apply(sum) 
title 
a   7 
b  11 
c  16 
Name: avg2, dtype: int64 

# An very awkward use of pandas 
>>> dict(title=g.avg1.apply(sum).index.values.tolist(), 
>>>  avg1=g.avg1.apply(sum).values.tolist(), 
>>>  avg2=g.avg2.apply(sum).values.tolist()) 
{'avg1': [6, 9, 13], 'avg2': [7, 11, 16], 'title': ['a', 'b', 'c']}