Asignando nombres de columnas a una serie de pandas.

Tengo una serie de pandas

object x Ezh2 2 Hmgb 7 Irf1 1 

Quiero guardar esto como un dataframe con nombres de columna Gene y Count, respectivamente, lo intenté

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

pero no funciona. La última forma que quiero es

 Gene Count Ezh2 2 Hmgb 7 Irf1 1 

¿Puedes sugerir cómo hacer esto?

Puede crear un dict y pasar esto como parámetro de datos al constructor de marcos de datos:

 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 

Alternativamente, puede crear un df a partir de la serie, debe llamar a reset_index ya que se reset_index el índice y luego cambiar el nombre de las columnas:

 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 

También puede utilizar el método .to_frame() .

Si es una Serie, asumo que ‘Gene’ ya es el índice, y seguirá siendo el índice después de convertirlo en un DataFrame. El argumento de name de .to_frame() nombrará la columna.

 x = x.to_frame('count') 

Si los desea como columnas, puede restablecer el índice:

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

Si tiene un objeto pd.Series x con un índice llamado ‘Gene’, puede usar reset_index y proporcionar el argumento del name :

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

Aquí hay una demostración:

 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