python - 导出到excel时将熊猫数据框中的列转换为数值
问题描述
我创建了一个从网站上抓取的熊猫数据框并将其导出到 excel 中,但数值以文本格式显示在 excel 中,因此想要一种快速将所有数值转换为数字的方法,然后我可以在 excel 中自动分析。
import requests
from bs4 import BeautifulSoup
import pandas as pd
from openpyxl import load_workbook
import csv
import os
def url_scraper(url):
response=requests.get(url)
html=response.text
soup=BeautifulSoup(html,"html.parser")
return soup
def first_inns_bowling_scorecard_scraper(url):
soup=url_scraper(url)
for divs in soup.find_all("div",{"id":"gp-inning-00"}):
for bowling_div in soup.find_all("div",{"class":"scorecard-section bowling"}):
table_headers=bowling_div.find_all("th")
table_rows=bowling_div.find_all("tr")[1:]
headers=[]
for th in table_headers:
headers.append(th.text)
data = []
for tr in table_rows:
td = tr.find_all('td')
row = [tr.text for tr in td]
data.append(row)
df=pd.DataFrame(data, columns=headers)
df.drop(df.columns[[1,9]], axis = 1,inplace=True)
df.to_excel(r'C:\\Users\\nathang\\Downloads\\random.xlsx',index = None, header=True)
os.chdir('C:\\Users\\nathang\\Downloads')
os.system("start EXCEL.EXE random.xlsx")
return df
url="https://www.espncricinfo.com/series/19781/scorecard/1216418/afghanistan-vs-ireland-3rd-t20i-ireland-tour-of-india-2019-20"
first_inns_bowling_scorecard_scraper(url)
我已经在单个列、多个列、整个数据集等上尝试了 df.apply(pd.to_numeric) 的多种不同变体,但无法为它工作。理想情况下,我只想将整个数据框输入其中,如果出现错误,它会忽略它。
解决方案
这可能会解决您的问题。
a = "5"
int(a) = 5
row = [int(tr.text) for tr in td]
推荐阅读
- excel - 将单元格的文本存储在字符串变量 VBA 中
- javascript - 如何在 React 和 Typescript 中使用 useRef 钩子和 getClientBoundingRect?
- javascript - 我如何修复我的代码以将每个段落放在一个新行中,因为我试图在给定段落之前添加段落
- php - 需要具有不同主题相同数据库的重复 Drupal 7 站点,有什么建议吗?
- javascript - 在没有 Webpack/Bundlers 的 PHP 中镜像 Vue 组件
- php - PHP调试mysqli连接,mysqli实例不能正常工作?
- python - 在一个非常大的数据集中找到一个不同长度的数组中的先前值,以提高内存效率,而它目前无法完成
- powershell - Skip Drive during Powershell Iteration
- sql - 如何根据列的累积总和创建不相等的十分位数/四分位数
- reactjs - SharePoint 框架 creatRef 对象未定义