2016-04-18 22 views
0

Hier ist meine Frage. Ich habe eine "Liste" von Objekten und einen Datenrahmen als Köpfe unten:Wie Sie den Inhalt einer Liste von Objekten als Bedingung für eine Schleife verwenden, um einen Datenrahmen in Python zu ändern

    0 
0 hsa-let-7f-2-3p 
1 hsa-let-7f-2-5p 
2 hsa-miR-105-3p 
3 hsa-miR-105-5p 
6 hsa-miR-106a-3p 

Und

   Gene_ID miRNA_family_ID 
1452449 NM_001038707 hsa-let-7f-2-3p 
14537388  NM_058241 hsa-let-7f-2-3p 
14540512  NM_078467 hsa-let-7f-2-3p 
15618969  NM_153051 hsa-let-7f-2-3p 
5500627 NM_001184880 hsa-let-7f-2-3p 

Ihre len.index sind diferent Für die "Liste"

`>>> len(miRNAs.index)` 
>>> len(Alvos_Mir.index) 

ihre Bots dtypes sind Objekte.

Was ich wirklich tun müssen, um den Inhalt der Liste zu verwenden, die mit der Spalte zu vergleichen in einer .csv Datei all Gene_ID, die es hat zu retten, wie es miRNA ist.

Was ich versucht zu tun war:

for i in range(len(miRNAs)): 
     GenesAlvo_miRNA = [Alvos_Mir['miRNA_family_ID'] == miRNAs[i]]; 
     colunas_interesse_to_save = GenesAlvo_miRNA.ix[:, ['Gene_ID']]; 
     #here i put the values.tolist() beacause I need the format of the output to be like (1,2,3,4,5) and not as a column 
     colunas_interesse_to_save = colunas_interesse_to_save.values.tolist() 
     #I need that the name of the output file is the content current being compare 
     colunas_interesse_to_save.to_csv(miRNAs[i], index=False) 

Ich bin geting den Fehler:

Traceback (most recent call last): 
    File "<stdin>", line 2, in <module> 
    File "/home/beatriz/anaconda/lib/python2.7/site-packages/pandas/core/ops.py", line 582, in wrapper 
    raise ValueError('Series lengths must match to compare') 
    ValueError: Series lengths must match to compare 

Irgendwelche Vorschläge? Vielen Dank im Voraus

+0

Ich muss mehrere neue Dateien erstellen, die so benannt werden, dass jede miRNA_id die multiples gen_ids für jede miRNA_ID enthält. Das heißt, ich muss die Originaldatei in mehrere Spalten aufteilen, die die Zeilen der Spalten gen_id entsprechend jeder miRNA_id enthalten. Eine miRNA_ID pro Datei. Ist das klarer? Vielen Dank für Ihre Hilfe –

Antwort

0

Ich bin nicht sicher, ob Sie die Dinge in der gleichen Datei oder in verschiedenen Dateien gespeichert werden sollen, aber wenn man die Dinge retten in verschiedenen Dateien will, könnten Sie so etwas wie die folgenden versuchen:

for k, v in Alvos_Mir.groupby('miRNA_family_ID'): 
    if k in miRNAs: v.to_csv(k+'.csv')