2014-09-29 21 views
9

Yinelemek istediğim bir panda veriim var. Mesela benim dataframe basitleştirilmiş bir sürümüdür olabilir: Üç yinelemeleri almalısınız Yukarıdaki örnek içinPandalar: ID'ye bölünmüş veri çerçevesi ve oluşturulan dosya adlarıyla csv'ye yaz.

for Gene in df: ## this is where I need the most help 

    OutFileName = Gene+".pdf" 

:

chr start end Gene Value MoreData 
chr1 123 123 HAPPY 41.1 3.4 
chr1 125 129 HAPPY 45.9 4.5 
chr1 140 145 HAPPY 39.3 4.1 
chr1 342 355 SAD 34.2 9.0 
chr1 360 361 SAD 44.3 8.1 
chr1 390 399 SAD 29.0 7.2 
chr1 400 411 SAD 35.6 6.5 
chr1 462 470 LEG 20.0 2.7 

Ben adlı yeni bir dosya benzersiz her genin üzerinde yineleme ve oluşturmak istiyoruz

HAPPY.pdf

chr1 123 123 HAPPY 41.1 3.4 
chr1 125 129 HAPPY 45.9 4.5 
chr1 140 145 HAPPY 39.3 4.1 

SAD.pdf: 3 outfiles ve 3 dataframes ile Elde edilen veri kareleri içeriği parçaları tarafından bölünmüş

chr1 462 470 LEG 20.0 2.7 

chr1 342 355 SAD 34.2 9.0 
chr1 360 361 SAD 44.3 8.1 
chr1 390 399 SAD 29.0 7.2 
chr1 400 411 SAD 35.6 6.5 

Leg.pdf analiz ve içerik dosyaya yazılacak dönecektir başka bir işlev için gönderilecektir.

cevap

17

Sen, bu sürekli tekrarlanması unique arayarak benzersiz değerleri elde dosya oluşturmak ve csv bu yazabiliriz:

Daha pandalar-thonic yöntem 'Gene' üzerine GroupBy etmektir
In [78]: 
genes = df['Gene'].unique() 
for gene in genes: 
    outfilename = gene + '.pdf' 
    print(outfilename) 
    df[df['Gene'] == gene].to_csv(outfilename) 
HAPPY.pdf 
SAD.pdf 
LEG.pdf 

ve sonra yineleme Gruplar üzerinde:

In [93]: 

gp = df.groupby('Gene') 
# groups() returns a dict with 'Gene':indices as k:v pair 
for g in gp.groups.items(): 
    print(df.loc[g[1]]) 

    chr start end Gene Value MoreData 
0 chr1 123 123 HAPPY 41.1  3.4 
1 chr1 125 129 HAPPY 45.9  4.5 
2 chr1 140 145 HAPPY 39.3  4.1 
    chr start end Gene Value MoreData 
3 chr1 342 355 SAD 34.2  9.0 
4 chr1 360 361 SAD 44.3  8.1 
5 chr1 390 399 SAD 29.0  7.2 
6 chr1 400 411 SAD 35.6  6.5 
    chr start end Gene Value MoreData 
7 chr1 462 470 LEG  20  2.7 
İlgili konular