Я хочу создать фрейм данных pandas из нескольких списков, и мои списки имеют следующий вид:
A = [1, 2]
B = [1, 2, 3, 4, 5]
C = [1, 2, 3, 4, 5, 6, 7]
Мой Python код такой же, как и для создания фрейма данных:
import pandas as pd
import numpy as np
A = [1, 2]
B = [1, 2, 3, 4, 5]
C = [1, 2, 3, 4, 5, 6, 7]
Z = [A,B,C]
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=['A', 'B', 'C']).T.sample(frac=1)
print (df)
Я получил вывод, как показано ниже:
A B C
1 2 1 2
5 1 4 6
6 2 5 7
3 2 2 4
2 2 1 3
4 1 3 5
0 1 1 1
В вышеприведенном выводе фрейма данных нет проблем в столбцах «A» и «C». Но в столбце «B» значение 1 относится к значениям 1 и 2 столбца «A». Мой ожидаемый результат - значения столбца «B» должны принадлежать любому из значений столбца «A», и то же, что и значения столбца «C», должны принадлежать любому из значений столбца «B», не кратному. Каждый элемент списков «A», «B» и «C» должен присутствовать в кадре данных как минимум один раз. Мой ожидаемый пример выходных данных выглядит следующим образом:
A B C
1 2 1 2
5 1 4 6
6 2 5 7
3 2 2 4
2 2 1 3
4 1 3 5
0 2 1 1
Руководство, чтобы получить ожидаемый результат.