Как добавить pandas фрейм данных из списков разных размеров, используя python? - PullRequest
1 голос
/ 23 апреля 2020

Я хочу создать pandas фрейм данных в соответствии с изображением ниже из списков разного размера:

фрейм данных

Ниже приведены мои списки:

A=[1,2,3]
B=[1,2,3,4,5,6]
C=[1,2,3,4,5,6,7,8,9,10,11,12]

Ниже мой python код:

import pandas as pd

A=[1,2,3]
B=[1,2,3,4,5,6]
C=[1,2,3,4,5,6,7,8,9,10,11,12]

lenA = len(A)
lenB = len(B)
lenC = len(C)

df = pd.DataFrame(columns=['A', 'B','C'])
count1=0
count2=0
for i,v1 in enumerate(A):
    count1+=count1+i
    for j,v2 in enumerate(B):
        for k, v3 in enumerate(C):
            count2 += count2 + j
            if(count1<1):
                if (count2 < 2):
                    df = df.append({'A': v1, 'B': v2,'C':v3}, ignore_index=True)
            else:
                df = df.append({'A': v1, 'B': v2,'C':v3}, ignore_index=True)
print(df)

Но я не смог получить ожидаемый результат. Руководство, чтобы получить вывод в соответствии с изображением, используя списки A, B и C. Заранее спасибо.

1 Ответ

3 голосов
/ 23 апреля 2020

Если вы уверены, что lenC делится на lenA и lenB, тогда вы можете использовать np.repeat:

pd.DataFrame({
    'A': np.repeat(A, lenC//lenA),
    'B': np.repeat(B, lenC//lenB),
    'C': C
})

Выход:

    A  B   C
0   1  1   1
1   1  1   2
2   1  2   3
3   1  2   4
4   2  3   5
5   2  3   6
6   2  4   7
7   2  4   8
8   3  5   9
9   3  5  10
10  3  6  11
11  3  6  12
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...