Мне нужно извлечь некоторые значения из массива 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
Есть идеи, как это исправить? Заранее спасибо за помощь!