2016-03-11 28 views
-1

比方說,我有以下的熊貓數據框:從一列或幾列熊貓數據框中生成有序序列的最佳方法?

Name Day Earnings 
Aaron 1  100 
Aaron 3  250 
Aaron 4  125 
Bill  2  55 
Bill  3  62 
Bill  5  1000 

所以,我想直到結束:

Name   Series 
Aaron  [1:100, 2:0, 3:250, 4:125] 
Bill  [1:0, 2:55, 3:62, 4:0, 5:1000] 

我能做到這一點用簡單的舊應用和GROUPBY(如果有的話我看不到正確的組合)?或者,還有更好的方法?

到目前爲止,我可以得到最接近的是:

>>> for Name, Info in df.groupby('Name'): 
... print(zip(Info['Day'], Info['Earnings'])) 
... 
[(1, 100), (3, 250), (4, 125)] 
[(2, 55), (3, 62), (5, 1000)] 

這是我用來生成數據幀CSV:

Name,Day,Earnings 
Aaron,1,100 
Aaron,3,250 
Aaron,4,125 
Bill,2,55 
Bill,3,62 
Bill,5,1000 
+0

你可以把數據框作爲Python代碼,所以可以運行它嗎? – roadrunner66

+0

@ roadrunner66感謝您的評論。我怎樣才能把它作爲Python代碼?我在上面包含了一個csv格式。 – helloB

+1

請問你爲什麼要這樣做?使用這種結構時可能會導致很多問題。只有我2美分... – MaxU

回答

0

你可以做這樣的事情:

import re 
import itertools 

names = '''Aaron 1  100 
Aaron 3  250 
Aaron 4  125 
Bill  2  55 
Bill  3  62 
Bill  5  1000''' 

print [(n, map(lambda x: '%s:%s'%(x[1],x[2]), l)) 
for n, l in itertools.groupby(
    [re.split('\W+', l) 
    for l in names.split('\n')], lambda x: x[0])] 
相關問題