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