Как создать определенный фрейм данных на основе Excel-листа? - PullRequest
1 голос
/ 01 апреля 2019

Я работаю с Google или инструментами, и в одном из примеров приведена структура данных. Я хотел бы импортировать эту структуру данных на основе листа Excel.

Это заданная структура данных:

jobs = [[[(3, 0), (1, 1), (5, 2)], 
         [(2, 0), (4, 1), (6, 2)],
         [(2, 0), (3, 1), (1, 2)]],
        [[(2, 0), (3, 1), (4, 2)], 
         [(1, 0), (5, 1), (4, 2)],
         [(2, 0), (1, 1), (4, 2)]], 
        [[(2, 0), (1, 1), (4, 2)],
         [(2, 0), (3, 1), (4, 2)],
         [(3, 0), (1, 1), (5, 2)]]]

Мне нравится импортировать jobs на основе листа Excel с данными, представленными как:

Job Task    M1  M2  M3
1    1      3   1   5
1    2      2   4   6
1    3      2   3   1
2    1      2   3   4
2    2      2   5   4
2    3      2   1   4
3    1      2   3   4
3    2      3   1   5

Ответы [ 2 ]

1 голос
/ 01 апреля 2019

Вы должны реорганизовать все свои данные, сгруппировавшись по заданию. Например:

import pandas as pd

df = pd.read_excel('bb.xlsx')

jobs = set(df['Job'])      #remove duplicates
result = [[[ (df['M1'][i],0), (df['M2'][i],1), (df['M3'][i],2) ] for i in df.index if df['Job'][i] == job] for job in jobs]
print(result)

ВНИМАНИЕ: результат не совсем то, что вы написали. Я думаю, что вы ошиблись некоторыми данными. Скажи мне, если я ошибаюсь.

0 голосов
/ 11 апреля 2019

Я даю другой ответ, используя pandas 'groupby API:

import pandas as pd

df = pd.read_excel('bb.xlsx')

result = [[[ (row['M1'],0), (row['M2'],1), (row['M3'],2) ] for idx, row in grpdf.iterrows()] for grpname, grpdf in df.groupby('Job')]
print(result)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...