2016-12-01 36 views
1

好,我有Python列表分割具有數據如下大熊貓從列表中唯一的行

a_list = [['W1', 'W0'], ['W1', 'W2'], ['W3', 'W1'], ['W4', 'W6'], ['W5', 'W10'],  ['W6', 'W7'], ['W6', 'W7'],['W6','W7'],['W6','W7']] 

我想將其轉換成熊貓數據框和我用下面的代碼

import pandas as pd 
df = pd.DataFrame(data = a_list) 
print(df) 

這是我看到

0  1 
0 W1 W0 
1 W1 W2 
2 W3 W1 
3 W4 W6 
4 W5 W10 
5 W6 W7 
6 W6 W7 
7 W6 W7 
8 W6 W7 

輸出,但我想我的輸出是作爲

 0  
0 W1,W0 
1 W1,W2 
2 W3,W1 
3 W4,W6 
4 W5,W10 
5 W6,W7 
6 W6,W7 
7 W6,W7 
8 W6,W7 

而且我想通過具有

 0  count 
0 W1,W0  1 
1 W1,W2  1 
2 W3,W1  1 
3 W4,W6  1 
4 W5,W10  1 
5 W6,W7  4 

回答

3

使用drop_duplicates上側的計數器,以消除重複,如列#6:new

df1 = (df[0] + ',' + df[1]).drop_duplicates() 
print (df1) 
0  W1,W0 
1  W1,W2 
2  W3,W1 
3  W4,W6 
4 W5,W10 
5  W6,W7 
dtype: object 

您可以使用cumcount

df['new'] = (df[0] + ',' + df[1]) 
df['counter'] = df.groupby('new').cumcount() + 1 
print (df) 
    0 1  new counter 
0 W1 W0 W1,W0  1 
1 W1 W2 W1,W2  1 
2 W3 W1 W3,W1  1 
3 W4 W6 W4,W6  1 
4 W5 W10 W5,W10  1 
5 W6 W7 W6,W7  1 
6 W6 W7 W6,W7  2 

使用groupby與彙總size

print (df.groupby((df[0] + ',' + df[1])).size().reset_index(name='count')) 
    index count 
0 W1,W0  1 
1 W1,W2  1 
2 W3,W1  1 
3 W4,W6  1 
4 W5,W10  1 
5 W6,W7  4 
+0

謝謝幫助。任何想法如何可以有櫃檯?例如第5行應該有一個2的計數器,而所有其他計數器應該有一個計數器作爲1 – RData

+0

你認爲第6行? – jezrael

+0

我的意思是5 w6,w7 2 – RData