Я использую эту функцию и APScheduler для добавления строк в Dataframe everyhour. Проблема заключается в том, что каждый раз, когда она запускается, она перезаписывает предыдущую запись, поэтому ее не «добавляет» ничего.Append Dataframe в Pandas внутри функции
def SMSx(frame):
SMS(frame)
frame = frame.append(SMS.SMSdf)
frame = frame[frame.a != "test"]
frame = DataFrame(frame, columns=['Time', 'Hour', 'Date', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'Total', 'Bucket'])
frame.to_excel('Sprint_Log.xlsx', 'Sheet 1', index=False)
SMSx.frame = frame
Если я использую тот же самый код (ниже) и запускаю его вручную, он отлично работает. Я не слишком уверен, что здесь происходит. SMS.SMSdf - это кадр данных из функции SMS.
SMS(frame)
frame = frame.append(SMS.SMSdf)
frame = frame[frame.a != "test"]
frame = DataFrame(frame, columns=['Time', 'Hour', 'Date', 'Day', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'Total', 'Bucket'])
frame.to_excel('Sprint_Log.xlsx', 'Sheet 1', index=False)
SMSx.frame = frame
Благодарим за помощь!
Код, который работал:
def SMSx(frame_temp, frame_perm):
SMS(frame_temp)
try:
frame_perm = DataFrame.from_csv('Sprint_Log.csv')
except:
pass
frame_perm = frame_perm.append(SMS.SMSdf)
frame_perm = frame_perm.drop_duplicates()
frame_perm = frame_perm[frame_perm.Ready != "test"]
frame_perm = DataFrame(frame_perm, columns=['Time', 'Hour', 'Date', 'Day', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'Total', 'Bucket'])
frame_perm.to_csv('Sprint_Log.csv')
SMSx.frame2 = frame_perm
Есть ли способ вернуть кадр и запустить строку 'frame = SMSx (frame)' под функцией SMSx? – ik629
только для того, чтобы быть понятным - ваш код действительно сделал именно то, что я хотел - мне просто нужно все в одной функции, поэтому я могу запустить его через APScheduler – ik629
@ ik629 Если вы запустите функцию 'SMSx (frame)' изнутри функция 'SMSx (фрейм)' вы получите бесконечную рекурсию. Глядя на APSScheduler, я не вижу способа улавливать возвращаемые значения из функций. Поскольку вы работаете только каждый час, можете ли вы вместо этого использовать файл для хранения результата? Посмотрите на методы DataFrame '.to_csv' и' .from_csv' вместе с временным файлом. – mfitzp