Построение поверх Ответ Newskooler , поскольку вы знаете имя столбца, по которому вы будете искать, вы можете добавить его решение в функцию и обработать '*' соответственно.
Это будет выглядеть примерно так:
# Write the data to the table
def table_creation(table, department, status):
def condition_to_value(df, kpi):
# use '*' to identify all departments
if isinstance(department, str) and department=='*':
department = df['A'].isin(df['A'].unique())
# make the function work with string or list inputs
if isinstance(department, str):
department = [department, ]
# notice the addition of the isin as recommended by Newskooler
performance_indicator = df.loc[(df['A'].isin(department)) & (df['C'] == kpi) & (df['B'] == status), 'D'].values[0]
return performance_indicator
Я понимаю, что здесь есть недостающие части, так как они также есть в первоначальном вопросе, но эти изменения должны работать без необходимости изменять способ вызова вашей функции сейчас, но будут включать преимущества, перечисленные в предыдущем ответе.