我喜欢展示效果良好的value_counts(normalize=True)内容series,但我也想value_counts()在附加专栏中展示未标准化的内容。
代码
import pandas as pd
cars = {'Brand': ['Honda Civic','Toyota Corolla','','Audi A4'],
'Price': [32000,35000,37000,45000]
}
df = pd.DataFrame(cars, columns = ['Brand', 'Price'])
df.Brand.value_counts(normalize=True)
Run Code Online (Sandbox Code Playgroud)
预期产出
perc count
Toyota Corolla 0.25 1
Audi A4 0.25 1
Honda Civic 0.25 1
0.25 1
Name: Brand, dtype: float64
Run Code Online (Sandbox Code Playgroud)
问题
我怎样才能将这两个信息附加到该系列中?
我试图从以下网站获取每个 href 元素内的不同值: https: //www.bmv.com.mx/es/mercados/capitales
\nhref对于HTML 文件中的每个不同元素,应有 1 行与提供的标题上的每个字段相匹配。
这是我试图抓取的 HTML 部分之一:
\n\n <tbody>\n \n <tr role="row" class="odd">\n<td class="sorting_1"><a href="/es/mercados/cotizacion/1959">AC\n \n</a></td><td><span class="series">*</span>\n</td><td>03:20</td><td><span class="color-2">191.04\n\n</span></td><td>191.32</td>\n<td>194.51</td>\n<td>193.92</td>\n<td>191.01</td>\n<td>380,544</td>\n<td>73,122,008.42</td>\n<td>2,793</td>\n<td>-3.19</td><td>-1.64</td></tr><tr role="row" class="even">\n <td class="sorting_1"><a href="/es/mercados/cotizacion/203">ACCELSA</a>\n </td>\n <td><span class="series">B</span>\n </td><td>03:20</td><td>\n <span class="">22.5</span></td><td>0</td>\n <td>22.5</td><td>0</td><td>0\n\n </td><td>3</td><td>67.20</td>\n <td>1</td><td>0</td><td>0</td></tr>\n <tr role="row" class="odd">\n <td class="sorting_1">\n <a href="/es/mercados/cotizacion/6096">ACTINVR</a></td>\n <td><span class="series">B</span></td><td>03:20</td><td>\n <span class="">15.13</span></td><td>0</td><td>15.13</td><td>0</td>\n <td>0</td><td>13</td><td>196.69</td><td>4</td><td>0</td>\n <td>0</td></tr><tr role="row" class="even"><td class="sorting_1">\n <a href="/es/mercados/cotizacion/339083">AGUA</a></td>\n <td><span class="series">*</span>\n </td><td>03:20</td><td>\n <span class="color-1">29</span>\n </td><td>28.98</td><td>28.09</td>\n <td>29</td><td>28</td><td>296,871</td>\n <td>8,491,144.74</td><td>2,104</td><td>0.89</td>\n <td>3.17</td></tr><tr role="row" class="odd"><td class="sorting_1">\n <a href="/es/mercados/cotizacion/30">ALFA</a></td><td><span class="series">A</span></td>\n <td>03:20</td>\n <td><span class="color-2">13.48</span>\n </td><td>13.46</td>\n <td>13.53</td><td>13.62</td><td>13.32</td>\n <td>2,706,398</td>\n …Run Code Online (Sandbox Code Playgroud) 我正在使用 python,当我单击本页DATA V CSV底部的按钮时,我试图获取 CSV 来源的链接。
我试过beautifulsoup:
import requests
from bs4 import BeautifulSoup
url = 'https://www.ceps.cz/en/all-data#AktualniSystemovaOdchylkaCR'
response = requests.get(url)
soup = BeautifulSoup(response.content, 'html.parser')
# Find the link to the CSV file
csv_link = soup.find('a', string='DATA V CSV').get('href')
Run Code Online (Sandbox Code Playgroud)
我也尝试过:
soup.find("button", {"id":"DATA V CSV"})
但没有找到后面的链接DATA V CSV。
我有以下表格:
<table width="100%" border="0" cellspacing="2" cellpadding="0">
<tbody><tr>
<td class="labelplain">ANGARA, EDGARDO J.<br>ENRILE, JUAN PONCE<br>MAGSAYSAY JR., RAMON B.<br>ROXAS, MAR<br>GORDON, RICHARD "DICK" J.<br>FLAVIER, JUAN M.<br>MADRIGAL, M. A.<br>ARROYO, JOKER P.<br>RECTO, RALPH G.<br></td>
</tr>
</tbody></table>
Run Code Online (Sandbox Code Playgroud)
我可以使用下面的代码遍历 HTML 的这一部分:
soup.find('td', text = re.compile('Co-author\(s'), attrs={'class': 'labelplain'}).find_next('td')
coauthor = soup.find('td', text = re.compile('Co-author\(s'), attrs={'class': 'labelplain'}).find_next('td')
Run Code Online (Sandbox Code Playgroud)
我可以使用以下内容获取文本:
for br in coauthor.find_all('br'):
firstcoauthor = (br.previousSibling)
print (firstcoauthor)
Run Code Online (Sandbox Code Playgroud)
我想要得到的输出是所有文本的结果,然后用分号(;)分隔,如下所示:ANGARA, EDGARDO J.;ENRILE, JUAN PONCE;MAGSAYSAY JR., RAMON B.;ROXAS, MAR;GORDON, RICHARD “迪克” J.;弗拉维尔,胡安 M.;马德里加尔,马萨诸塞州;阿罗约,小丑 P.;莱克托,拉尔夫 G.
但上面的代码给了我如下结果:
ANGARA, EDGARDO J.
ENRILE, JUAN PONCE
MAGSAYSAY …Run Code Online (Sandbox Code Playgroud) 我对数据框和/或系列的所有 apply、applymap、map 内容感到有点困惑。我想通过执行一些网络抓取操作的函数创建从数据框中的一列派生的多个列。
我的数据框看起来像这样
>>> df
row1 url row3
0 data1 http://... 123
1 data2 http://... 325
2 data3 http://... 346
Run Code Online (Sandbox Code Playgroud)
网页抓取功能是这样的
def get_stuff_from_url(url: str):
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
data1 = soup.find('div', {'class': 'stuff1'})
data2 = soup.find('span', {'class', 'stuff2'}).text
data3 = soup.find('p', {'class', 'stuff3'}).text
return data1, data2, data3
Run Code Online (Sandbox Code Playgroud)
结果应该是
>>> df_new
row1 url row3 row4 row5 row6
0 data1 http://... 123 newdata1a newdata2a newdata3a
1 data2 http://... 325 newdata1b newdata2b newdata3b
2 data3 http://... 346 newdata1c newdata2c …Run Code Online (Sandbox Code Playgroud) 尝试更新我的代码以使用"driver.find_element(By.XPATH..."而不是"driver.find_elements_by_xpath(...",但当我发送密钥时,我不断收到以下错误:
selenium.common.exceptions.ElementNotInteractableException: Message: element not interactable
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
driver = webdriver.Chrome(PATH)
link_login = "https://www.wyzant.com/tutor/jobs"
driver.get(link_login)
username_input = driver.find_element(By.XPATH, "//*[@id='Username']")[1]
username_input.send_keys("Test")
Run Code Online (Sandbox Code Playgroud) python ×6
web-scraping ×4
dataframe ×3
pandas ×3
html ×1
javascript ×1
js-beautify ×1
reactjs ×1
replace ×1
selenium ×1
string ×1
webdriver ×1
xpath ×1