如何使用Python创建分层数据帧?

2024-04-26 10:39:52 发布

您现在位置: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<;补体第四成份。这些值可能是随机的

我使用了下面的示例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。指导我按照我的逻辑获取输出。谢谢