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
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
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()
Si vous avez un objet pd.Series
x
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