Так что это относится к предыдущему вопросу, его расширению.
Я хочу пройти через xlsx, используя Pandas, содержащий временные метки и получить время простоя
Итак, я получил словарь, который содержит временные метки для простоев с датами в качестве ключей. Однако теперь возникает проблема, что если в течение одного дня есть два отдельных простоя, вместо отдельной записи для него, он добавляется в список простоев, например, он отображается как
Timestamp('2019-10-18 00:00:00')":['00:20:00','00:30:00','00:20:00','00:40:00','05:50:00','05:60:00']
Объясните цель, из этой записи я извлекаю первый и последний элемент, чтобы получить время начала и окончания для времени простоя в любой конкретный день, а затем указать общее количество часов.
Я могу разделить их на два В разных словарях я использовал это:
df1=pd.DataFrame.from_dict(result, orient='index')
print(df)
df1=df1.fillna('0')
df1=df1.replace(to_replace =0,value ='0')
for i in df1.index:
print(i)
for j in range(len(df1.loc[i])-3):
if (df1.loc[i][j+1] is not '0' and df1.loc[i][j] is not '0'):
#the error is faced over here is, we have a total of 72 72 rows, however not all of the are filled for all the timestamps, hence they remain as NoneType, thus need to be ignored.
x=(datetime.datetime.strptime(df1.loc[i][j+1],"%H:%M:%S"))-(datetime.datetime.strptime(df1.loc[i][j],"%H:%M:%S"))
if(x>datetime.timedelta(seconds=600)):
print(df1.loc[i][j]," ",df1.loc[i][j+1])
print(i,"fixed")
#this gives us the complete appended dictionary with two new entries however we are missing the Date column for these
z=list(df1.loc[i][:j])
y=list(df1.loc[i][j+1:])
z={i:z}
y={i:y}
df2=pd.DataFrame.from_dict(z, orient='index')
df3=pd.DataFrame.from_dict(y, orient='index')
df1=df1.drop(i)
df1 = pd.concat([df2, df1], ignore_index=False,sort=False)
df1 = pd.concat([df3, df1], ignore_index=False,sort=False)
df1=df1.fillna(0)
df1=df1.replace(to_replace ='0',value =0)
break
else:
break
, поэтому после обработки я получал словарь, сохраненный под именем результата. Ошибка, которую я получаю после этого:
Traceback (most recent call last):
File "path", line 85, in <module>
x=(datetime.datetime.strptime(df1.loc[i][j+1],"%H:%M:%S"))-(datetime.datetime.strptime(df1.loc[i][j],"%H:%M:%S"))
TypeError: strptime() argument 1 must be str, not int
Как вы можете видеть, я определил условие if не go за пределами элементов, которые не равны нулю, но все же эта ошибка возникает.