2016-04-21 62 views

回答

1

print df.replace('null', '').groupby('id').sum().replace('', 'null') 
    A B  C 
id    
1 a r  s 
2 q d null 
3 w b null 

如果值null的类型不是string,使用fillna

print df.fillna('').groupby('id').sum().replace('', 'null') 
    A B  C 
id    
1 a r  s 
2 q d null 
3 w b null 
+0

这种运作良好 –

1

设置

import pandas as pd 

data = [ 
    [1, 'a', None, None], 
    [1, None, 'r', None], 
    [1, None, None, 's'], 
    [2, None, 'd', None], 
    [2, 'q', None, None], 
    [3, None, 'b', None], 
    [3, 'w', None, None] 
] 

df = pd.DataFrame(data, columns=['id', 'A', 'B', 'C']) 

DF看起来像

id  A  B  C 
0 1  a None None 
1 1 None  r None 
2 1 None None  s 
3 2 None  d None 
4 2  q None None 
5 3 None  b None 
6 3  w None None 

解决方案

df.set_index('id').stack().unstack() 

貌似

A B  C 
id    
1 a r  s 
2 q d None 
3 w b None