Python Проблемы при создании определения для объединения двух наборов данных - использование строки для ссылки и vars () - PullRequest
1 голос
/ 09 июля 2020

Я пытаюсь объединить два набора данных и могу без проблем объединить два набора данных за пределами определения:

year = 2014
a = "text_"+str(year)
b = vars()[a]
full = datamerge(year).set_index('FileName').join(b.set_index('FileName'))

Это создает объединенный фрейм данных, который я хочу. Однако, когда я использую определение:

def datawithname(year):
    a = "text_"+str(year)
    b = vars()[a]
    full = datamerge(year).set_index('FileName').join(b.set_index('FileName'))
    return(full)

datawithname(2014)

, я получаю KeyError: 'text_2014'

KeyError                                  Traceback (most recent call last)
<ipython-input-205-e168f3386261> in <module>
----> 1 datawithname(2014)

<ipython-input-204-0c844027fc3e> in datawithname(year)
      2 def datawithname(year):
      3     a = "text_"+str(year)
----> 4     b = vars()[a]
      5     full = datamerge(year).set_index('FileName').join(b.set_index('FileName'))
      6     return(full)

KeyError: 'text_2014'

1 Ответ

0 голосов
/ 09 июля 2020

Поскольку 'a' оценивается внутри скобок,
вызов vars()[a] совпадает с вызовом vars()['text_2014'].
vars() возвращает словарь с именами переменных в качестве ключа, не значения переменных в виде ключей.

Вам необходимо изменить:

b = vars()[a]

на:

b = vars()['a']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...