У меня есть две серии, каждая из которых содержит переменные, которые я хочу использовать в функции.Я хочу применить функцию для каждой комбинации переменных, при этом полученным результатом будет DataFrame вычисленных значений, индекс будет индексом одной серии, а столбцы будут индексом другой серии.
Я попытался найти ответ на похожую проблему - я уверен, что она есть, но я не уверен, как описать ее для поисковых систем.
Я решил проблему, создав функциюиспользуя для циклов, так что вы можете понять логику.Я хочу знать, есть ли более эффективная операция, чтобы сделать это без использования циклов for.
Из того, что я прочитал, я представляю некоторую комбинацию понимания списка с заархивированными столбцами для вычисления значений,который затем преобразуется в DataFrame, но я не могу решить его таким образом.
Вот код для воспроизведения проблемы и текущее решение.
import pandas as pd
bands = pd.Series({'A': 5, 'B': 17, 'C': 9, 'D': 34}, name='band')
values = pd.Series({'Jan': 1, 'Feb': 1.02, 'Mar': 1.05, 'Apr': 1.12}, name='values')
# Here is an unused function as an example
myfunc = lambda x, y: x * (1 + 1/y)
def func1(values, bands):
# Initialise empty DataFrame
df = pd.DataFrame(index=bands.index,
columns=values.index)
for month, month_val in values.iteritems():
for band, band_val in bands.iteritems():
df.at[band, month] = band_val * (1/month_val - 1)
return df
outcome = func1(values, bands)