折叠Multiindex DataFrame以进行回归

问题描述 投票:5回答:1

我有一个Multiindexed DataFrame包含解释变量df和一个包含响应变量df_Y的DataFrame

# 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'])

enter image description here

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

enter image description here

我能够使用索引foo对单级DataFrame执行回归

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

问题:然而,因为Yfoo两个级别的bar变量相同,所以如果我们还包括bar,我们可以有两倍的回归样本。

enter image description here

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

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

python python-2.7 pandas
1个回答
0
投票

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

df.index = df.index.drop_level()
df = df.join(df_Y)
© www.soinside.com 2019 - 2024. All rights reserved.