Чтобы получить более ясность, давайте посмотрим на DataFrame с двумя уровнями в его индексе (MultiIndex).
index = pd.MultiIndex.from_product([['TX', 'FL', 'CA'],
['North', 'South']],
names=['State', 'Direction'])
df = pd.DataFrame(index=index,
data=np.random.randint(0, 10, (6,4)),
columns=list('abcd'))
Метод reset_index
, вызываемый параметрами по умолчанию, преобразует все индексы в столбцы и использует простой RangeIndex
в качестве нового индекса.
df.reset_index()
Используйте параметр level
для управления тем, какие уровни индексов преобразуются в столбцы. Если возможно, используйте имя уровня, которое является более явным. Если имена уровней отсутствуют, вы можете ссылаться на каждый уровень по его целочисленному местоположению, которое начинается с 0 извне. Вы можете использовать скалярное значение здесь или список всех индексов, которые вы хотели бы сбросить.
df.reset_index(level='State') # same as df.reset_index(level=0)
В редком случае, когда вы хотите сохранить индекс и превратить индекс в столбец, вы можете сделать следующее:
# for a single level
df.assign(State=df.index.get_level_values('State'))
# for all levels
df.assign(**df.index.to_frame())
На всякий случай, если кто-нибудь на моем месте ...
const { remote } = require('webdriverio');
(async () => {
const browser = await remote({
logLevel: 'trace',
capabilities: {
browserName: 'chrome'
}
})
await browser.url('https://duckduckgo.com/')
const inputElem = await browser.$('#search_form_input_homepage')
await inputElem.setValue('WebdriverIO')
const submitBtn = await browser.$('#search_button_homepage')
await submitBtn.click()
console.log(await browser.getTitle()) // outputs: "Title is: WebdriverIO (Software) at DuckDuckGo"
await browser.deleteSession()
})().catch((e) => console.error(e))
Если вы ищете какой-то простой скрипт для выполнения в браузере, возможно, WebdriverIO будет перегружен. WebdriverIO отлично подходит для тестов и сложных манипуляций с браузером
Попробуйте https://github.com/GoogleChrome/puppeteer