2017-02-03 9 views
1

私は約100万行と4列の巨大なファイルを持っています。分析したい列はAとCです。列Aの名前は複数回繰り返しますが、そのたびに列Cの一意の名前と一致します。列Cの4つの特定の名前を探しています。列Aの名前に対応します。 列Aのすべての名前を列Cの4つの名前の任意の組み合わせで使用したいと考えています。また、各組み合わせの数も数えたいと思います。 は、私は私が例に示し混乱さを知っている:python/pandaのマッチングとカウントの組み合わせ

オリジナルファイル: 私は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 

あなたはグループのデータフレームがAによってできると(組み合わせの目的のカウントのために)アイテムをソートした後、カラムCからすべての項目に参加し、すべての組み合わせを見つけるために、

答えて

1

をいただき、ありがとうございます。そこにどのように多くの組み合わせを見つけるために、あなたは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

私はまた別の質問があります: "LR"の列Cでは、その名前は "LRR"です。私は何をすることができます、そのプログラムは別の名前とみなして1つの名前として数えますか? –

+0

結果をExcelに保存するには、 'df.to_excel(...)'と思いますか? 'LR'と' LRR'を同じように扱うには、 'dR.C.replace(" LRR "、" LR ")を使って' LRR'を 'LR'に置き換える方法があります。 – Psidom

関連する問題