Как создать фрейм данных, в котором названием столбцов будут выступать аргументы, а индексом тикер?

При создании функции, которая принимает несколько ключевых аргументов, возникает ошибка.

Входные данные:

Цена актива S: 100
Страйк K: np.arange(95, 120, 2.5)
Кол-во дней t: 164
Тикер: например, GAZP 

Как можно создать фрейм данных, в котором названием столбцов будут выступать аргументы, а индексом тикер?

P.S. если страйков больше 1, то все остальные аргументы будут дублироваться:

def data_table(S, K, t, ticker):
    data = pd.DataFrame({'Spot':S, 'Strike':K, 'days to expiration': t, index = ticker})
    return data

Ответы (1 шт):

Автор решения: MaxU

Пример:

In [27]: df = pd.DataFrame({'Spot':S, 'Strike':K, 'days to expiration': t,'ticker':ticker})

результат:

In [28]: df
Out[28]:
   Spot  Strike  days to expiration ticker
0   100    95.0                 164   GAZP
1   100    97.5                 164   GAZP
2   100   100.0                 164   GAZP
3   100   102.5                 164   GAZP
4   100   105.0                 164   GAZP
5   100   107.5                 164   GAZP
6   100   110.0                 164   GAZP
7   100   112.5                 164   GAZP
8   100   115.0                 164   GAZP
9   100   117.5                 164   GAZP

Иметь дубликаты в качестве значений индекса - очень плохая идея. Индекс должен уникально идентифицировать каждую строку.

Пример того как делать не надо:

In [31]: bad = df.set_index("ticker")

In [32]: bad
Out[32]:
        Spot  Strike  days to expiration
ticker
GAZP     100    95.0                 164
GAZP     100    97.5                 164
GAZP     100   100.0                 164
GAZP     100   102.5                 164
GAZP     100   105.0                 164
GAZP     100   107.5                 164
GAZP     100   110.0                 164
GAZP     100   112.5                 164
GAZP     100   115.0                 164
GAZP     100   117.5                 164

теперь мы не сможем обратиться к строке по индексу:

In [33]: bad.loc[ticker]
Out[33]:
        Spot  Strike  days to expiration
ticker
GAZP     100    95.0                 164
GAZP     100    97.5                 164
GAZP     100   100.0                 164
GAZP     100   102.5                 164
GAZP     100   105.0                 164
GAZP     100   107.5                 164
GAZP     100   110.0                 164
GAZP     100   112.5                 164
GAZP     100   115.0                 164
GAZP     100   117.5                 164

PS в таких случаях стоит задуматься о мульти-индексе - это когда индекс состоит из двух или более столбцов.

→ Ссылка