Присвойте значение datetime.time списку numpy - PullRequest
0 голосов
/ 12 апреля 2020

Мне нужно извлечь некоторые значения из массива Numpy. Я получаю массив из pandas кадра данных, который импортирую из листа Excel. В основном у меня есть датафрейм с некоторыми идентификаторами и названием дня рождения людей (понедельник, вторник ...). С другой стороны, у меня есть дата-фрейм с идентификаторами и сменами всей недели. В Excel часы имеют формат времени, а когда я импортирую их в Pandas, они имеют объект формата.

    CC           object
Monday       object
Tuesday      object
Wednesday    object
Thursday     object
Friday       object
Saturday     object
Sunday       object

Как только я превращаю их в массив Numpy, они принимают формат datetime.time. Например, 6: 00 становится datetime.time (6, 0) и так далее. Приведенный ниже код - это то, что я делаю для достижения желаемого результата.

    PTR=pd.read_excel('File1.xlsx')
    HC=pd.read_excel('File2.xlsx')
    PTR=PTR[['CC','Monday', 'Tuesday', "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]]
    PTR.iloc[0]=PTR.columns #I need to turn my header into a row


    A1=np.array(PTR)
    A2=HC[['CC','Weekday']].to_numpy()
    num_rows, num_col = np.shape(A1)
    numrow_A2, numcol_A2 = np.shape(A2)
    #A1=np.array2string(A1) failed attempt to solve my issue by turning my array to str
    B=np.arange(numrow_A2) #numpy list to be filled with the starting time of the shift


    k=0 #row of my small dataframe HC= A2(numpy array)
    i=0 #row of my big dataframe PTR = A1(numpy array)


    while (i < num_rows-1) and (k<numrow_A2):

        for j in range(1,8):
            if (A2[k,0] == A1[i,0]) and (A2[k,1] == A1[0,j]):
                B[k]=A1[i,j]
                k+=1
                i=0

        i+=1

Проблема возникает, когда я назначаю время начала смены A1 [i, j] списку B Numpy в положение к. Я получаю сообщение

TypeError: int() argument must be a string, a bytes-like object or a number, not 'datetime.time'

Я превратил А1 в строки, но получаю другую ошибку. Ну, единственный оставшийся вариант - превратить их в целые числа, но это не представляется возможным.

TypeError: string indices must be integers

Есть идеи, как это исправить? Заранее спасибо за помощь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...