Предполагаемый импорт:
import pandas as pd
Ответ Джона Галта - это в основном операция reduce
. Если у меня больше нескольких блоков данных, я бы поместил их в список, подобный этому (сгенерированный через списки или циклы):
dfs = [df0, df1, df2, dfN]
Предполагая, что у них есть общий столбец, например name
в вашем примере, я бы сделал следующее:
df_final = reduce(lambda left,right: pd.merge(left,right,on='name'), dfs)
Таким образом, ваш код должен работать с любым количеством файлов данных, которые вы хотите объединить.
Изменить 1 августа 2016 года : для тех, кто использует Python 3: reduce
, был перемещен в functools
. Поэтому, чтобы использовать эту функцию, вам сначала нужно будет импортировать этот модуль:
from functools import reduce
Если вы уже знакомы с запросами, вам также может пригодиться request-html . Если вы просто хотите получить визуализированный html и не взаимодействовать со страницей, например, нажимая кнопки, вниз страницы и т. Д., То вы можете использовать эту опцию.
Ваш вопрос идеально подходит для этой демонстрации. Следующий код полностью отображает HTML, который вы хотите.
from requests_html import HTMLSession
session = HTMLSession()
r = session.get('http://rnb.osim.ro/?pn=')
r.html.render(sleep = 5)
print(r.html.html)
Это происходит потому, что requests
не может действительно выполнить JavaScript внутри сайта. Как вы можете подумать, requests
- это просто запрос, а не браузер, который может обрабатывать JS и работать со средами для внешнего интерфейса (то есть Angular, React, Ajax). Чтобы отказаться от этих современных и надежных сайтов, я лично рекомендую использовать библиотеку scrapy
. Он разработан специально для утилизации и может немного справиться с JavaScript. И даже если это невозможно, вы все равно можете использовать selenium web driver
для полной эмуляции браузера.