#python #pandas #tkinter
#python #pandas #tkinter
Вопрос:
У меня есть вызываемый класс mclass
, который должен использоваться в качестве объекта tkinter в основной программе. Внутри этого класса у меня есть несколько кнопок tkinter, и одна из них должна иметь возможность редактировать фрейм данных pandas и вносить изменения на месте глобально.
Вот код, представляющая интерес функция self.save_data()
, и предполагается, что фрейм данных pandas table_cat
редактируется кнопкой self.saving
. Я пробовал много разных вещей, но по какой-то причине изменения не будут происходить на месте в исходном фрейме данных.
#some pandas dataframe with 10000 rows .. the column structure is given below
table_cat=pd.DataFrame(columns=['index','redshifted_freq','source_found','velocity_d','velocity_u'])
class mclass:
def __init__(self, window=None, mclass_df=None):
self.saving = Button(window,text='Save',bg='red',command=self.save_data)
self.saving.pack(side='bottom')
def save_data (self):
i=self.e4.get()
self.data_frame.loc['source_found',i]=self.e.get() # e-> tkinter button for 'source found'
self.data_frame.loc['redshifted_freq',i]=float(self.e1.get()) # e1-> tkinter button for 'redshifted_frec'
self.data_frame.loc['velocity_d',i]=float(self.e2.get()) # e2-> tkinter button for 'velocity_d'
self.data_frame.loc['velocity_u',i]=float(self.e3.get()) # e3-> tkinter button for 'velocity_u'
global table_cat
table_cat=self.data_frame
Ответ №1:
Эта строка table_cat=self.data_frame
перезаписывает предыдущее содержимое вашего глобального фрейма данных, поэтому каждый раз, когда вы нажимаете эту кнопку, ваши предыдущие данные теряются.
На самом деле вам нужно добавить новые данные, например:
table_cat = table_cat.append(self.data_frame)
Комментарии:
1. Но в том-то и дело, я хочу, чтобы это было перезаписано, я хочу, чтобы изменения произошли в ‘table_cat’… Но после назначения table_cat остается неизменным
2. Не могли бы вы затем поделиться остальной частью своего кода? Потому что нам нужно знать, где и как вы получаете доступ
table_cat
к данным