2017-09-16 14 views
1

J'ai une liste d'ID de protéines et je veux ajouter '> 1', '> 2', '> 3', ...... '> len (liste)' avant chaque ligne. Comment puis-je faire cela chez les pandas?Comment ajouter un en-tête pour chaque ligne dans pandas?

Exemple:

protein_ID 
KKP65897.1 
KKP42119.1 
KKP91065.1 
OGY93232.1 
KUK66913.1 

Je veux que ce soit:

protein_ID 
>1  
KKP65897.1 
>2  
KKP42119.1 
>3  
KKP91065.1 
>4  
OGY93232.1 
>5  
KUK66913.1 

Si je fais ceci:

for num, line in enumerate(df.protein_ID): 
    print(num, line) 

Je reçois:

0 K 
1 K 
2 P 
3 6 
4 5 
5 8 
6 9 
7 7 
8 . 
9 1 
10 

Comment puis-je y parvenir? Merci!

+0

Je veux stocker les données. – stevex

Répondre

0

interleave les valeurs de protein_ID et index de df

In [619]: from cytoolz import interleave 

In [620]: pd.DataFrame({'protein_ID': list(
     interleave(['>' + (df.index+1).astype(str), df.protein_ID]))}) 
Out[620]: 
    protein_ID 
0   >1 
1 KKP65897.1 
2   >2 
3 KKP42119.1 
4   >3 
5 KKP91065.1 
6   >4 
7 OGY93232.1 
8   >5 
9 KUK66913.1 

Si vous avez besoin juste liste

In [625]: ['protein_ID']+list(interleave(['>' + (df.index+1).astype(str), df.protein_ID])) 
Out[625]: 
['protein_ID', 
'>1', 
'KKP65897.1', 
'>2', 
'KKP42119.1', 
'>3', 
'KKP91065.1', 
'>4', 
'OGY93232.1', 
'>5', 
'KUK66913.1'] 

Détails

In [621]: df 
Out[621]: 
    protein_ID 
0 KKP65897.1 
1 KKP42119.1 
2 KKP91065.1 
3 OGY93232.1 
4 KUK66913.1 
+0

Merci beaucoup! – stevex