【问题标题】:pandas Series to Dataframe using Series indexes as columns使用系列索引作为列的熊猫系列到数据框
【发布时间】:2017-03-06 13:53:55
【问题描述】:

我有一个系列,像这样:

series = pd.Series({'a': 1, 'b': 2, 'c': 3})

我想把它转换成这样的数据框:

    a   b   c
0   1   2   3

pd.Series.to_frame() 不起作用,结果如下,

    0
a   1
b   2
c   3

如何从 Series 构造 DataFrame,将 Series 的索引作为列?

【问题讨论】:

标签: python pandas


【解决方案1】:

你也可以试试这个:

df = DataFrame(series).transpose()

使用 transpose() 函数,您可以互换索引和列。 输出如下所示:

    a   b   c
0   1   2   3

【讨论】:

  • 如果没有单独导入DataFrame,需要写成:df = pd.DataFrame(series).transpose()
  • 完成。输出正是我们想要的。
  • MaxU 的评论给出了最好的答案。 series.to_frame().T
  • 警告:这种方法对于小系列来说效果很好,但是如果你使用更长的系列,复杂度就会爆炸。对我来说,2755 列的单个系列运行了 21 秒。
【解决方案2】:

您不需要转置步骤,只需将您的系列包装在一个列表中并将其传递给DataFrame 构造函数:

pd.DataFrame([series])

   a  b  c
0  1  2  3

或者,调用Series.to_frame,然后使用快捷方式.T转置:

series.to_frame().T

   a  b  c
0  1  2  3

【讨论】:

    【解决方案3】:

    你也可以试试这个:

    a = pd.Series.to_frame(series)

    a['id'] = list(a.index)

    说明:
    第一行将系列转换为单列 DataFrame。
    第 2 行向此 DataFrame 添加一列,其值与索引相同。

    【讨论】:

    • 稍微解释一下它的工作原理会很有帮助。请记住,我们的答案应该是有启发性的!
    • 这不会产生预期的结果。
    【解决方案4】:

    尝试重置索引。它会将您的索引转换为数据框中的一列。

    df = series.to_frame().reset_index()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-03
      • 2022-12-10
      • 2014-10-11
      • 2019-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多