python - 如何使用 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。指导我按照我的逻辑获得输出。谢谢。
解决方案
推荐阅读
- python - 如何用python制作翻译器?
- amazon-web-services - aws Iam assumeRole 和 Get Temp 凭证使用 boto3 不会在 get_service_graph 中返回服务
- sql - 计算每日保真度
- flutter - Flutter 自定义 DropdownMenuItem
- docker - 在 Docker 容器中使用本地 SSH 密钥
- c# - 如何在 Razor 页面上动态构造 ajax url 操作字符串?
- c++ - 如何在 C++ 中删除重复的排列
- javascript - nodejs - 如何在分隔符后删除部分字符串
- c - 检查excec是否终止
- laravel - 多个 docker 代理通过单个 nginx docker 传递?