Обход и манипулирование данными в кадре данных - PullRequest
2 голосов
/ 01 апреля 2020

Так что это относится к предыдущему вопросу, его расширению.

Я хочу пройти через 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 за пределами элементов, которые не равны нулю, но все же эта ошибка возникает.

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