将列名分配给熊猫系列

Posted

技术标签:

【中文标题】将列名分配给熊猫系列【英文标题】:assigning column names to a pandas series 【发布时间】:2015-04-14 17:19:37 【问题描述】:

我有一个熊猫系列

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

你能建议怎么做吗

【问题讨论】:

【参考方案1】:

如果您有一个索引名为“基因”的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

【讨论】:

【参考方案2】:

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

如果是系列,我假设“基因”已经是索引,并且在将其转换为 DataFrame 后将保持索引。 .to_frame()name 参数将命名该列。

x = x.to_frame('count')

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

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

【讨论】:

【参考方案3】:

您可以创建一个字典并将其作为数据参数传递给数据框构造函数:

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

【讨论】:

以上是关于将列名分配给熊猫系列的主要内容,如果未能解决你的问题,请参考以下文章

如何将整个列表分配给熊猫数据框的每一行

如何将列表中的值分配给熊猫数据框并控制每个列表元素在数据框中的分布/频率

将列值分配给熊猫数据框中的唯一行[重复]

无法使用系列设置熊猫列值,而是将所有内容都设置为np.nan

如何循环遍历熊猫数据框,并有条件地将值分配给变量的一行?

如何在sql服务中将列名分配给标量函数的返回值