Python создает фреймы данных с циклом - PullRequest
0 голосов
/ 15 мая 2018

Я хотел бы создать пронумерованные фреймы данных из списка имен следующим образом:

tickers = [‘IBM US Equity’, ‘AAPL US Equity’]
for num, ticker in enumerate(tickers, start=1):
      df[num] = df.loc[ticker]
      print(df[num])

df - это еще один фрейм данных pandas с тикерами в качестве индекса.Таким образом, написание следующего действительно дает мне желаемый результат:

df1 = df.loc[‘IBM US Equity’]
print(df1)

Однако, при попытке использовать цикл я получаю сообщение об ошибке: «Неверное количество пройденных элементов 4, размещение подразумевает 1»

Чего мне не хватает?

Большое спасибо за вашу помощь!

1 Ответ

0 голосов
/ 15 мая 2018

Используйте словарь для переменного числа переменных:

tickers = ['IBM US Equity', 'AAPL US Equity']

df_dict = {}

for num, ticker in enumerate(tickers, start=1):
      df_dict[num] = df.loc[ticker]

Затем получить доступ к элементам через df_dict[1] и т. Д.

Альтернативный способ сформулировать вашу логику - использовать словарь:

df_dict = {num: df.loc[ticker] for num, ticker in enumerate(tickers, 1)}

Причина в вашем коде: pandas пытается добавить фрейм данных в серию: левая часть df[num] = df.loc[ticker] - это серия, а правая часть - фрейм данных. Это невозможно, и, достаточно описательно, pandas жалуется на неправильное количество предметов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...