我在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以获得此形状。
答案 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
,因为我的示例数据框列名尚未包含此内容。