我有一个包含大约1,500行和15列的Python数据帧.对于一个特定的列,我想删除每行的前3个字符.这里有一个简单的例子是数据帧:
import pandas as pd
d = {
'Report Number':['8761234567', '8679876543','8994434555'],
'Name' :['George', 'Bill', 'Sally']
}
d = pd.DataFrame(d)
Run Code Online (Sandbox Code Playgroud)
我想删除Report Number数据框列中每个字段的前三个字符d.
我使用Selenium Marrionette和GeckoDriver来提取网络数据.我使用以下命令设置我的Firefox配置文件首选项:
fp = webdriver.FirefoxProfile()
fp.set_preference("browser.download.folderList", 1)
fp.set_preference("browser.helperApps.alwaysAsk.force", False)
fp.set_preference("browser.download.manager.showWhenStarting",False)
fp.set_preference("browser.download.dir", "H:\Downloads")
fp.set_preference("browser.download.downloadDir","H:\Downloads")
fp.set_preference("browser.download.defaultFolder","H:\Downloads")
binary = FirefoxBinary(r'C:\Program Files (x86)\Mozilla Firefox\Firefox.exe')
firefox_capabilities = DesiredCapabilities.FIREFOX
firefox_capabilities['marionette'] = True
driver = webdriver.Firefox(capabilities=firefox_capabilities, firefox_binary=binary, firefox_profile = fp)
Run Code Online (Sandbox Code Playgroud)
根据我的理解,阅读无法设置firefox配置文件首选项并将FirefoxProfile传递给FirefoxDriver后,现在使用时似乎没有做任何事情firefox_profile.所以我需要实现新的更新firefox_capabilities,但我不确定如何做到这一点.有任何想法吗?
我正在将我的一些网络抓取代码从 R 转换为 Python(我无法让 geckodriver 与 R 一起工作,但它可以与 Python 一起工作)。无论如何,我试图了解如何使用 Python 解析和读取 HTML 表。快速背景,这是我的 R 代码:
doc <- htmlParse(remDr$getPageSource()[[1]],ignoreBlanks=TRUE, replaceEntities = FALSE, trim=TRUE, encoding="UTF-8")
WebElem <- readHTMLTable(doc, stringsAsFactors = FALSE)[[7]]
Run Code Online (Sandbox Code Playgroud)
我会将 HTML 页面解析为 doc 对象。然后我会从 开始doc[[1]],然后遍历更高的数字,直到看到我想要的数据。在这种情况下,我doc[[7]]看到了我想要的数据。然后我将读取该 HTML 表并将其分配给 WebElem 对象。最终我会把它变成一个数据框并使用它。
所以我在 Python 中所做的是这样的:
html = None
doc = None
html = driver.page_source
doc = BeautifulSoup(html)
Run Code Online (Sandbox Code Playgroud)
然后我开始玩,doc.get_text但我真的不知道如何获得我想看到的数据。我想看到的数据就像一个 10x10 的矩阵。当我使用 R 时,我只会使用doc[[7]]并且该矩阵几乎处于完美的结构中,我可以将其转换为数据帧。但是,我似乎无法用 Python 做到这一点。任何建议将不胜感激。
更新:
我已经能够使用 Python 获取我想要的数据——我关注了这个博客,用 Python 创建了一个数据框:Python Web-Scraping。这是我们在该博客中抓取的网站:最受欢迎的狗品种 …
我想从整个python pandas数据帧中删除美元符号.它与这篇文章类似:
但是,我正在寻找删除无效的美元符号.我相信这是因为正则表达式认为美元符号是字符串的结尾,但我不知道该怎么做.这是我到目前为止创建的内容:
dftest = pd.DataFrame({'A':[1,2,3],
'B':[4,5,6],
'C':['f;','$d:','sda%;sd$'],
'D':['s%','d;','d;p$'],
'E':[5,3,6],
'F':[7,4,3]})
Run Code Online (Sandbox Code Playgroud)
这给出了输出:
In [155]: dftest
Out[155]:
A B C D E F
0 1 4 f; s% 5 7
1 2 5 $d: d; 3 4
2 3 6 sda%;sd$ d;p$ 6 3
Run Code Online (Sandbox Code Playgroud)
然后我尝试删除美元符号如下:
colstocheck = dftest.columns
dftest[colstocheck] = dftest[colstocheck].replace({'$':''}, regex = True)
Run Code Online (Sandbox Code Playgroud)
这不会删除美元符号,但此代码确实删除百分号:
dftest[colstocheck] = dftest[colstocheck].replace({'%':''}, regex = True)
Run Code Online (Sandbox Code Playgroud)
所以我不确定如何更换美元符号.
我希望利用 Keras 模型的输出通过矩阵乘法手动计算预测值。我想这样做是为了帮助了解 Keras 在幕后是如何工作的。我将使用简单的异或问题。这是我的代码:
import numpy as np
import keras
from keras.models import Sequential
from keras.layers.core import Dense
from keras.callbacks import LambdaCallback
class LossHistory(keras.callbacks.Callback):
def on_train_begin(self, logs={}):
self.losses = []
def on_batch_end(self, batch, logs={}):
self.losses.append(logs.get('loss'))
history = LossHistory()
# the four different states of the XOR gate
training_data = np.array([[0,0],[0,1],[1,0],[1,1]], "float32")
# the four expected results in the same order
target_data = np.array([[0],[1],[1],[0]], "float32")
model = Sequential()
model.add(Dense(4, input_dim=2, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
print_weights = LambdaCallback(on_epoch_end=lambda batch, logs: print(model.layers[0].get_weights()))
model.compile(loss='mean_squared_error', …Run Code Online (Sandbox Code Playgroud) 我一直在使用Python计算数学方程式。例如:
from sympy import Symbol, Derivative, Integral
x = Symbol('x')
d = Symbol('d')
Integral(8*x**(6/5)-7*x**(3/2),x).doit()
Run Code Online (Sandbox Code Playgroud)
结果为输出:
3.63636363636364*x**2.2 - 2.8*x**2.5
Run Code Online (Sandbox Code Playgroud)
有没有办法将这个答案显示为分数而不是小数?我想看到的输出为:
(40/11)*x**(11/5)-(14/5)*x**(5/2)+C
Run Code Online (Sandbox Code Playgroud) 我正在使用scipy.optimize.linprog库来使用单纯形方法计算最小化。我正在教科书中解决这个问题,希望有人能指出正确的方向,因为我没有得到预期的输出。问题是:
Minimize w = 10*y1 + 15*y2 + 25*y3
Subject to: y1 + y2 + y3 >= 1000
y1 - 2*y2 >= 0
y3 >= 340
with y1 >= 0, y2 >= 0
Run Code Online (Sandbox Code Playgroud)
我为此编写的代码是:
import numpy as np
import pandas as pd
from scipy.optimize import linprog
A = np.array([
[1, 1, 1],
[1,-2, 0],
[0, 0, 1]])
b = np.array([1000,0,340])
c = np.array([-10,-15,-25])
res = linprog(c, A_ub=A, b_ub=b,
bounds=(0, None))
print('Optimal value:', res.fun, '\nX:', res.x)
Run Code Online (Sandbox Code Playgroud)
给出输出:
Optimal value: -18400.0
X: …Run Code Online (Sandbox Code Playgroud) 我一整天都在使用 RSelenium,但仍然在这里和那里遇到障碍。我当前的问题是使用WebElemReports$clickElement()单击链接并打开一个新窗口的代码。我试图在“about:config”中调整 Firefox 设置,这样它就不会打开一个新窗口。它在正常使用中不会打开一个窗口,但是使用 RSelenium 时,它仍然会打开一个新窗口。我也研究过这种方法,但无法遵循其工作原理:
我的下一个思考过程是将 switchToWindow() 函数与 getWindowHandles() 一起使用。我写的代码如下:
remDr$closeWindow()
windHand <- remDr$getWindowHandles()
remDr$switchToWindow(windHand)
Run Code Online (Sandbox Code Playgroud)
我的想法是我将关闭当前窗口,以便只有一个句柄可以引用并将该句柄传递给 switchToWindow 函数。我找不到 R 的很多 switchToWindow 文档。使用上面的代码时收到以下错误:
错误:摘要:未知错误详细信息:处理命令时发生未知的服务器端错误。类:org.openqa.selenium.WebDriverException
对此的任何帮助将不胜感激 - 我试图尽可能多地研究这个问题,所以这不会像我上一篇文章那样被标记为重复的问题。非常感谢。