首页 > 解决方案 > 如何使用比较矩阵的结果创建 DataFrame?

问题描述

我正在寻找一种将比较矩阵转换为列出所有组合和比较矩阵结果的 DataFrame 的方法。

这是到目前为止的样子:

import pandas as pd

x1 = ["x11","x12"]
x2 = ["x21","x22"]
y1 = ["y11","y12"]
y2 = ["y21","y22"]

matrix = pd.DataFrame([[1,2],[3,4]], columns = [x1, x2], index = [y1,y2])

print(matrix)

[Out:]         
        x11 x12
        x21 x22
y11 y21   1   2
y12 y22   3   4

现在我想创建一个 DataFrame,它包含索引对的所有组合及其结果。

输出数据框应如下所示

x11 x21 y11 y21 1
x12 x22 y11 y21 2
x11 x21 y12 y22 3
x12 x22 y12 y22 4

我尝试了多种将列名和索引放入列表然后将它们添加在一起的方法。但到目前为止没有任何效果。

任何帮助是极大的赞赏。还请原谅我在 Stackoverflow 上发布问题的经验不足。

标签: pythonpandasdataframe

解决方案


使用DataFrame.stack

out = matrix.stack([0,1])
print (out)
y11  y21  x11  x21    1.0
          x12  x22    2.0
y12  y22  x11  x21    3.0
          x12  x22    4.0
dtype: float64

如果级别的顺序很重要,请添加DataFrame.reorder_levels

out = matrix.stack([0,1]).reorder_levels([2,3,0,1])
print (out)
x11  x21  y11  y21    1.0
x12  x22  y11  y21    2.0
x11  x21  y12  y22    3.0
x12  x22  y12  y22    4.0
dtype: float64

推荐阅读