assigning column names to a pandas series

前端 未结 3 988
走了就别回头了
走了就别回头了 2020-12-13 13:18

I have a pandas series

object x
Ezh2   2
Hmgb   7
Irf1   1

I want to save this as a dataframe with column names Gene and Count respectivel

相关标签:
3条回答
  • 2020-12-13 13:46

    You can also use the .to_frame() method.

    If it is a Series, I assume 'Gene' is already the index, and will remain the index after converting it to a DataFrame. The name argument of .to_frame() will name the column.

    x = x.to_frame('count')
    

    If you want them both as columns, you can reset the index:

    x = x.to_frame('count').reset_index()
    
    0 讨论(0)
  • 2020-12-13 13:52

    If you have a pd.Series object x with index named 'Gene', you can use reset_index and supply the name argument:

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

    Here's a demo:

    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 讨论(0)
  • 2020-12-13 13:59

    You can create a dict and pass this as the data param to the dataframe constructor:

    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
    

    Alternatively you can create a df from the series, you need to call reset_index as the index will be used and then rename the columns:

    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
    
    0 讨论(0)
提交回复
热议问题