【问题标题】:How can I add a series with multiindex to a dataframe specifying its index to be the Series' name如何将具有多索引的系列添加到数据框中,将其索引指定为系列的名称
【发布时间】:2019-09-05 16:48:49
【问题描述】:

我正在尝试将具有多索引的系列添加到数据框,并且我想将该新行的索引设置为系列的名称

stock  factors  dates     
a      0        2019-01-01     0.0
       1        2019-01-01    27.0
       0        2019-01-01     7.0
       1        2019-01-01    24.0

我尝试的是下面的代码:

series.name = 'Myindex'
df = df.append(series)

目标是向现有数据框添加一个新行,索引设置为“Myindex”

但我得到了

TypeError: object of type 'int' has no len()

【问题讨论】:

  • 数据框看起来如何?可以添加1、2行数据样本吗?
  • 这是一个没有值的新数据框

标签: pandas dataframe multi-index


【解决方案1】:

我相信您需要通过索引值在新的DataFrame 中创建列,然后使用rename

print (series)
stock  factors  dates     
a      0        2019-01-01     0.0
       1        2019-01-01    27.0
       0        2019-01-01     7.0
       1        2019-01-01    24.0
dtype: float64

df = pd.DataFrame(columns=series.index)

df = df.append(series.rename('Myindex'))
print (df)
stock            a                                 
factors          0          1          0          1
dates   2019-01-01 2019-01-01 2019-01-01 2019-01-01
Myindex        0.0       27.0        7.0       24.0

【讨论】:

  • 我发现真正的问题是我有几个系列要添加到这个数据框中,但它们具有不同的多索引。也许我应该在添加之前将它们的索引重置为相同
  • @Bubblethan - 是的,你的解决方案对我有用,但很有必要df = pd.DataFrame(columns=series.index)
  • @Bubblethan - 一个想法 - 可以使用 df = pd.DataFrame(columns=series1.index.union(series2.index)) 吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-04-14
  • 1970-01-01
  • 2018-04-19
  • 2021-10-10
  • 2014-07-11
  • 2015-05-14
  • 1970-01-01
相关资源
最近更新 更多