Я пишу класс, который использует рамку данных pandas и создает кучу новых функций на основе ранее существовавших столбцов в dataframe. Я хотел бы принять во внимание тот факт, что в любой момент времени некоторые столбцы, которые я использую для создания функций, могут отсутствовать для данного набора данных. Поэтому перед каждой функцией проверьте, присутствует ли столбец, используемый для создания этой функции, и, если нет, добавьте имя функции в список. Я также хотел бы проверить, было ли создание функции успешным и справляться с ошибками.Дизайн шаблона для создания новых функций в pandas dataframe
Самый лучший способ, что я могу думать, делать это до сих пор является использование Dict в сочетании с Exec:
mydict = {'preexistingColumn' : ('newfeaturename', "statement"),
'date' : ('date', "df['date'] = pd.DatetimeIndex(df['date'])"),
'amount' : ('new', "df['new'] = df.groupby('group').amount.apply(f)")}
for key, value in mydict.items():
if key is not in the dataframe:
missingFeaturesList.append(V[0])
try:
exec v[1]
except Exception:
deal with exception
Это кажется немного hackey мне хоть и было интересно, если там может быть более pythonic способ позаботиться об этой проблеме.
вы не должны использовать EXEC, вместо того, чтобы сделать свои функции, как это: '' лямбда x: x ['date'] = pd.DatetimeIndex (x ['date']) '' – Jeff