Pandas堆叠DataFrame并使用索引连接列的名称

时间:2016-01-22 14:49:08

标签: python pandas

我在Pandas / Python中遇到这种特定格式的问题。 我的DataFrame看起来像这样。Current dataframe

所需的输出是这样的。

Id  Predicted
1_1 0
1_2 0
1_3 0
1_4 0
1_5 0
1_6 0
1_7 0
1_8 0
1_9 0
2_1 0
2_2 0
2_3 0
2_4 0
2_5 0
2_6 0
2_8 0
2_9 0

其中Id由索引加上连接的列名组成,而预测是为DataFrame中此特定坐标预测的值。

1_1索引1列1,1_2索引1,列2等。

我想将输出写入csv,但不知道如何迭代DataFrame以获得此形状。

1 个答案:

答案 0 :(得分:1)

首先,您可以使用stack重新整形数据框:

    plan =$("input[name=plan]:checked").next("p").text();

这为您提供了一个包含多索引的系列(两个索引级别,来自原始索引和列名称)。然后,您可以按如下方式重新格式化此多索引:

In [29]: df = pd.DataFrame(np.random.randn(3,3))

In [30]: df
Out[30]:
          0         1         2
0 -1.138655 -1.633784  0.328994
1 -0.952137  1.012359  1.327618
2 -1.318940  1.191259  0.133112

In [31]: df2 = df.stack()

In [32]: df2 
Out[32]:
0  0   -1.138655
   1   -1.633784
   2    0.328994
1  0   -0.952137
   1    1.012359
   2    1.327618
2  0   -1.318940
   1    1.191259
   2    0.133112
dtype: float64

请注意,我在此处添加了In [33]: df2.index = [str(i) + '_'+ str(j) for i, j in df2.index] In [34]: df2 Out[34]: 0_0 -1.138655 0_1 -1.633784 0_2 0.328994 1_0 -0.952137 1_1 1.012359 1_2 1.327618 2_0 -1.318940 2_1 1.191259 2_2 0.133112 dtype: float64 ,因为我的示例数据框列名尚未包含此内容。