首页 > 解决方案 > 如何使用 Python 创建分层的熊猫数据框?

问题描述

我想创建一个数据框,如下所示。

C1  C2  C3  C4

1   1   1   1
1   2   2   2
1   2   2   3
1   2   3   4
1   2   3   5
2   3   4   6
3   4   5   7

C4 列应该是唯一值。C4 列值应属于 C3 列中的任何一个。C3 列值应属于 C2 列中的任何一个。C2 列值应属于 C1 列中的任何一个。列值应为 C1 < C2 < C3 < C4。这些值可能是随机的。

我使用了下面的示例 Python 代码。

import  pandas as pd
import  numpy as np

C1 =  [1, 2]
C2 =  [1, 2, 3,4]
C3 =  [1, 2, 3, 4,5]
C4 =  [1,2,3,4,5,6,7]

Z = [C1,C2,C3,C4]

n = max(len(x) for x in Z)
a = [np.hstack((np.random.choice(x, n - len(x)), x)) for x in Z]

df = pd.DataFrame(a, index=['C1', 'C2', 'C3','C4']).T.sample(frac=1)
print (df)

下面是我的输出。

 C1 C2 C3 C4
  1  4  2  2
  1  3  4  6
  2  1  2  4
  1  2  5  1
  2  4  5  7
  1  2  3  5
  2  2  1  3

但我无法按照我的逻辑得到输出。C3 列中的值 2 属于 C2 列的 1 和 4。C2 列中的值 2 也属于 C1 列的 1 和 2。指导我按照我的逻辑获得输出。谢谢。

标签: pythondataframe

解决方案


推荐阅读