#python #pandas #dataframe
#python #pandas #фрейм данных
Вопрос:
Я новичок в python и надеюсь, что кто-нибудь сможет помочь мне разобраться с map
. У меня есть функция myfunc
, которая принимает столбец в фрейме данных и для каждого столбца создает вычисление, результатом которого является JSON, который я затем преобразую в фрейм данных. Ниже приведен псевдокод для того, что я делаю.
Например
def myfunc (factor):
# This is the API we are posting to
str_url = "www.foourl.com"
# This is the factor we post to try and get the result
request_string = [{"foo":factor}]
header = {"content-type": "application/json","AUTH-TOKEN": "Foo"}
# We post it using our authorization and Token
response = requests.post(str_url , data=json.dumps(request_string), headers=header)
# convert response to json format and then to the dataframe
results_json = response.json()
return(pd.json_normalize(results_json))
Затем я выполняю свою функцию, используя приведенный ниже код, который работает отлично. Я могу получить доступ к каждому результату, используя result[1], чтобы получить результаты фрейма данных для factor[1], results [2] для factor [2] и так далее. Он возвращает <класс’pandas.core.series.Серия’>
# Import in the excel sheet and get the factors
df = pd.read_excel ('ref_data/search_factors.xlsx')
test = df['factor_number']
# Run the API for every factor
# Collapse the list then into a dataframe
result = test.map(myfunc)
Мой вопрос
Поскольку все результаты являются фреймами данных и имеют точно такую же структуру (5 столбцов с одинаковым именем), есть ли способ, которым я могу просто свернуть все в один фрейм данных после всех итераций с map
Я знаю, например, в R
вы можете использовать bind_rows в dplyr
или что-то подобное map_df
, чтобы сделать то же самое. Является ли их эквивалентом в python?
Ответ №1:
Да, в pandas
у нас есть concat
df=pd.concat(result.tolist())