将列名分配给pandas系列

时间:2015-02-13 15:51:50

标签: python pandas dataframe series

我有一个熊猫系列

object x
Ezh2   2
Hmgb   7
Irf1   1

我想将其保存为分别具有列名Gene和Count的数据帧 我试过了

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

但它不起作用。我想要的最终形式是

Gene Count
Ezh2   2
Hmgb   7
Irf1   1

你能建议怎么做吗

3 个答案:

答案 0 :(得分:22)

您可以创建一个dict并将其作为数据参数传递给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

或者你可以从系列中创建一个df,你需要调用reset_index作为索引,然后重命名列:

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

答案 1 :(得分:17)

您还可以使用.to_frame()方法。

如果是系列赛,我会假设' Gene'已经是索引,并在将其转换为DataFrame后仍将是索引。 name的{​​{1}}参数将命名该列。

.to_frame()

如果您希望它们都作为列,则可以重置索引:

x = x.to_frame('count')

答案 2 :(得分:0)

如果您有一个索引为'Gene'的pd.Series对象x,则可以使用reset_index并提供name参数:

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

这是一个演示:

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