2017-02-03 36 views
1

我有一個大約100萬行和4列的大文件。我想要分析的列是A和C.列A中的名稱重複多次,但每次都與C列中的唯一名稱匹配。我正在C列中查找4個特定名稱,我希望它們在列A中對應的名稱。 我想要列A中的所有名稱與列C中4個名稱的任意組合,並且還希望統計它們中每個組合的數量。 我知道這是混淆了我表現出一個例子:Python /熊貓中的匹配和計數組合

原始文件: 我找TI,NB,CC和LR在列C和A列的對應名稱

A    B   C   D 
    GB1       TI 
    GB2       NB 
    GB3       VH 
    GB1       NB 
    GB2       CC 
    GB6       TI 
    GB1       LR 
    GB1       CC 
    GB8       JK 
    GB9       TI 

結果我想:

Name:   Name from column C: 
    GB1   TI, NB,LR,CC 
    GB2   NB,CC 
    GB6   TI 
    GB9   TI 

另外我想知道有多少每個組合有:(約20個可能的組合)

Combination:   Number: 
TI,NB,LR,CC    1 
NB,CC     1 
TI      2 

謝謝

回答

1

要找出所有的組合,可以組數據幀由A和排序的項目(的組合目的的計數)之後加入從C列中的所有項;要找出多少組合也有,你可以做一個value_counts()

items = ["TI", "NB", "CC", "LR"] 
# use isin method to filter the data frame so that the results only contain interested items 
# ignore the sort_values here if the order of the combination matters here 
df1 = df[df.C.isin(items)].groupby("A").C.apply(lambda g: ','.join(g.sort_values())) 
df1 

#A 
#GB1 CC,LR,NB,TI 
#GB2   CC,NB 
#GB6    TI 
#GB9    TI 
#Name: C, dtype: object 

df1.value_counts() 

#TI    2 
#CC,LR,NB,TI 1 
#CC,NB   1 
#Name: C, dtype: int64 
+0

謝謝,這是我想要的東西。對不起,我對編程不是很熟悉,你能幫忙,我怎樣才能把結果保存在excel文件中? –

+0

我還有另外一個問題:C列中的「LR」,其名稱有時是「LRR」。我能做些什麼,該程序不會將它們視爲單獨的名稱並將它們計爲一個名稱? –

+0

爲了將結果保存在excel中,我想'df.to_excel(...)'?並且將'LR'和'LRR'視爲相同的方法,一種方法是使用'df.C.replace(「LRR」,「LR」)''用'LR'替換'LRR'。 – Psidom