web-dev-qa-db-fra.com

attribution de noms de colonne à une série de pandas

J'ai une série de pandas 

object x
Ezh2   2
Hmgb   7
Irf1   1

Je veux enregistrer ceci en tant que structure de données avec les noms de colonne Gene et Count, respectivement J'ai essayé 

x_df = pd.DataFrame(x,columns = ['Gene','count'])

mais cela ne fonctionne pas.La forme finale que je veux est

Gene Count
Ezh2   2
Hmgb   7
Irf1   1

Pouvez-vous suggérer comment faire cela

12
Ssank

Vous pouvez créer un dict et le transmettre en tant que paramètre data au constructeur dataframe:

In [235]:

df = pd.DataFrame({'Gene':s.index, 'count':s.values})
df
Out[235]:
   Gene  count
0  Ezh2      2
1  Hmgb      7
2  Irf1      1

Sinon, vous pouvez créer un fichier DF à partir de la série. Vous devez appeler reset_index car l'index sera utilisé, puis renommer les colonnes:

In [237]:

df = pd.DataFrame(s).reset_index()
df.columns = ['Gene', 'count']
df
Out[237]:
   Gene  count
0  Ezh2      2
1  Hmgb      7
2  Irf1      1
16
EdChum

Vous pouvez également utiliser la méthode .to_frame()

Si c'est une série, je suppose que 'Gene' est déjà l'index et restera l'index après l'avoir converti en un DataFrame. L'argument name de .to_frame() nommera la colonne. 

x = x.to_frame('count')

Si vous voulez les deux en tant que colonnes, vous pouvez réinitialiser l'index:

x = x.to_frame('count').reset_index()
14
Sealander

Si vous avez un objet pd.Seriesx avec l'index nommé 'Gene', vous pouvez utiliser reset_index et fournir l'argument name:

df = x.reset_index(name='count')

Voici une démo:

x = pd.Series([2, 7, 1], index=['Ezh2', 'Hmgb', 'Irf1'])
x.index.name = 'Gene'

df = x.reset_index(name='count')

print(df)

   Gene  count
0  Ezh2      2
1  Hmgb      7
2  Irf1      1
0
jpp