2017-06-15 54 views
1

我有一個簡單的數據集:有不同的名稱結合起來一行一列大熊貓蟒蛇

import pandas as pd 


df = { 
    'columA':['1A','2A','3A','4A','5A','6A'], 
'count': [ 1, 12, 34, 52, '3',2], 
'columnB': ['a','dd','dd','ee','d','f'] 
} 


df = pd.DataFrame(df) 

它看起來像這樣:

columA columnB count 
    1A  a  1 
    2A  dd 12 
    3A  dd 34 
    4A  ee 52 
    5A  d  3 
    6A  f  2 

更新:合併2A和3A的名稱應該是像'SAB'或'2A plus 3A'等任意的東西,我以'2A | 3A'爲例,它讓一些人感到困惑。 我想總結一下計算行數2A和3A,並給它一個名稱SAB 所需的輸出:

columA columnB count 
    1A  a  1 
    SAB  dd 46 
    4A  ee 52 
    5A  d  3 
    6A  f  2 

回答

1

我們可以在columnB

df = {'columA':['1A','2A','3A','4A','5A','6A'], 
     'count': [ 1, 12, 34, 52, '3',2], 
     'columnB': ['a','dd','dd','ee','d','f']} 

df = pd.DataFrame(df) 

df.groupby('columnB').agg({'count': 'sum', 'columA': 'sum'}) 


     columA count 
columnB  
a  1A  1 
d  5A  3 
dd  2A3A 46 
ee  4A  52 
f  6A  2 

使用groupby如果您擔心關於索引名稱,你可以寫一個像這樣的函數。

def join_by_pipe(s): 
    return '|'.join(s) 

df.groupby('columnB').agg({'count': 'sum', 'columA': join_by_pipe}) 


     columA count 
columnB  
a  1A  1 
d  5A  3 
dd  2A|3A 46 
ee  4A  52 
f  6A  2 
+0

如何在過程中將2A3A重命名爲2 | 3A?這只是一個示例數據集,但是這個部分對於我的真實數據集非常重要 – Jessica

+0

@Jessica我已經做了一個編輯以添加到您的管道中。解決方案取決於你是否總是有'A'或者是否有其他字母。將其編輯到您的問題中,我可以放棄它! – josh

+0

作爲一個例子這個'def join_by_pipe(s): return'|'.join(s.str.replace('A',''))+'A''做你想要的,但它可能不會爲你的數據集提供genrealise,如果你有,可以說'5B'爲數值。 – josh