将列名分配给Pandas系列

59

我有一个Pandas系列

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个回答

69
你可以创建一个字典,并将其作为 data 参数传递给 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

你也可以从这个 series 来创建一个 df,需调用 reset_index 以将 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

62

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

如果它是一个系列(Series),我假设“Gene”已经是索引,并且在转换为数据帧后将保留为索引。 .to_frame()name参数将命名该列。

x = x.to_frame('count')

如果你想要它们作为列,你可以重置索引:

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

14
如果您有一个索引命名为“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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接