折叠多索引数据框以进行回归

Posted

技术标签:

【中文标题】折叠多索引数据框以进行回归【英文标题】:Collapsing a Multiindex DataFrame for Regression 【发布时间】:2016-02-24 23:13:40 【问题描述】:

我有一个包含解释变量df 的多索引数据帧和一个包含响应变量df_Y 的数据帧

# Create DataFrame for explanatory variables
np.arrays = [['foo', 'foo', 'foo', 'bar', 'bar', 'bar'], 
             [1, 2, 3, 1, 2, 3]]
df = pd.DataFrame(np.random.randn(6,2),
                  index=pd.MultiIndex.from_tuples(zip(*np.arrays)),
                  columns=['X1', 'X2'])

# Create DataFrame for response variables
df_Y = pd.DataFrame([1, 2, 3], columns=['Y'])

我只能对索引为foo 的单级DataFrame 执行回归

df_X = df.ix['foo']    # using only 'foo'
reg = linear_model.Ridge().fit(df_X, df_Y)
reg.coef_

问题:但是,由于Y 变量对于foobar 两个级别都是相同的,所以如果我们还包括bar,我们可以获得两倍的回归样本。

重塑/折叠/取消堆叠多级 DataFrame 以便我们可以利用所有数据进行回归的最佳方法是什么? 其他级别的行数可能少于df_Y

抱歉,措辞令人困惑,我不确定正确的术语/措辞

【问题讨论】:

【参考方案1】:

可以删除第一个索引,然后连接将起作用:

df.index = df.index.drop_level()
df = df.join(df_Y)

【讨论】:

以上是关于折叠多索引数据框以进行回归的主要内容,如果未能解决你的问题,请参考以下文章

合并两个具有多索引的数据框

使用索引值列表对 pandas 多索引数据框进行切片 [重复]

使用部分索引元组列表对多索引数据帧进行切片的最佳方法是啥?

对唯一顺序索引的多索引熊猫数据框进行切片和赋值

在保持二级索引完整的同时对多索引数据框中的行进行排序

多索引 df 中的线性回归