我正在使用历史数据,并且有一些非常古老的日期,不在熊猫的时间戳范围内。我已经查阅了熊猫时间序列/日期功能文档,该文档提供了一些有关跨界的信息,但是从这些信息中,我仍然不清楚,如果可以将数据转换为datetime
类型,我该怎么做。。
我还看到了一些关于Stack Overflow的线程,但是它们只是指出了问题所在(例如,纳秒,最大范围为570多年),或者建议设置errors = coerce
将80%的数据转换为NaT
s。
是否可以将低于默认熊猫下限的日期转换为日期?这是我的数据示例:
import pandas as pd
df = pd.DataFrame({'id': ['836', '655', '508', '793', '970', '1075', '1119', '969', '1166', '893'],
'date': ['1671-11-25', '1669-11-22', '1666-05-15','1673-01-18','1675-05-07','1677-02-08','1678-02-08', '1675-02-15', '1678-11-28', '1673-12-23']})
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 Selenium在此公共 PowerBI 仪表板的“交付”页面中抓取“报告交付>>按疫苗数量”的 PowerBI 报告,以获取列出所有国家/地区的表格,以及交付的疫苗名称,以及递送的剂量数。
此屏幕截图显示了我正在尝试抓取的 PowerBI 报告。单击登录页面上的“交付”并选择“报告的交付>>按疫苗数量”后,页面下半部分会加载一个表格,如下图所示。您可以右键单击表上的任意位置以展开所有行,即国家/地区名称。在每个国家/地区名称下方,一栏中是提供的疫苗名称,相邻栏中是“已提供的剂量”。有 100 多行包含国家/地区名称,这些行会在您向下滚动此表时动态加载。
我设法启动了 Chrome 无头浏览器,通过单击相关按钮进入“交付”页面,然后通过单击“查看选项”菜单中的相关复选框打开我想要的正确报告左。在这之后我被卡住了。我无法弄清楚如何扩展这个动态呈现的表格中的所有行,我也无法弄清楚如何向下滚动表格并保存国家/地区名称以及它们各自的疫苗名称和剂量发表。
关于扩展所有国家/地区名称行,我在 StackOverflow 中看到一些帖子建议在 Actions 类中使用 Selenium 的 Context Click,但我似乎无法弄清楚如何将它应用于我的示例。
关于滚动问题,我在这里也有点不知所措。我试图找到为表调用数据的底层 API,但徒劳无功,但我的新手眼睛无法发现任何东西,我想知道还有什么方法可以一直向下滚动表来抓取这个数据。
任何帮助、提示或建议将不胜感激!
from selenium.webdriver import Chrome
from selenium.webdriver import ChromeOptions
webdriver = "C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe"
options = ChromeOptions()
driver = Chrome(webdriver, options = options)
url = 'https://app.powerbi.com/view?r=eyJrIjoiNmE0YjZiNzUtZjk2OS00ZTg4LThlMzMtNTRhNzE0NzA4YmZlIiwidCI6Ijc3NDEwMTk1LTE0ZTEtNGZiOC05MDRiLWFiMTg5MjAyMzY2NyIsImMiOjh9&pageName=ReportSectiona329b3eafd86059a947b'
driver.get(url)
#click on "Delivery" button
driver.find_element_by_xpath('//*[@id="pvExplorationHost"]/div/div/exploration/div/explore-canvas-modern/div/div[2]/div/div[2]/div[2]/visual-container-repeat/visual-container-modern[11]/transform').click()
#click on "Reported deliveries >> By number of vaccines" click box
driver.find_element_by_xpath('//*[@id="pvExplorationHost"]/div/div/exploration/div/explore-canvas-modern/div/div[2]/div/div[2]/div[2]/visual-container-repeat/visual-container-modern[8]/transform/div/div[3]/div/visual-modern/div/button').click()
Run Code Online (Sandbox Code Playgroud) 我不敢相信我花了多长时间试图解决这个真正基本的问题,而且我似乎无法在论坛中搜索找到正确的答案,所以我就把它扔掉了,因为我确保这可以通过一行简单的代码来解决:
我正在尝试在我的数据框中生成一些新列,其中包含表单的随机唯一标识符q
+一些 5 位数字。例如,这样的 ID 之一是q12345
.
到目前为止,我的方法是:(1)生成一个数字数组,(2)一个相同长度字符的列表q
,然后(3)尝试将它们组合成一个数组,我会( 4)添加到我的数据框。我已经很容易地完成了步骤一和步骤二,但我似乎无法让步骤 3 工作。
如果您提供有关 (a) 如何执行步骤 3 以及 (b) 更简单的方法来执行此操作的任何提示,我将不胜感激,我确信我忽略了这一点。
我在 python 3.4 中尝试了连接字符串和 int中的各种方法,并且可以让它适用于单个元素,但不适用于整个数组。
到目前为止,我有:
sample_length = 10 #for example
values = np.random.randint(low=10000, high= 15000, size = sample_length)
q = ['q'] * sample_length
Run Code Online (Sandbox Code Playgroud)