小编Cli*_*ers的帖子

长数作为字符串

作为我的数据集的一部分,其中一列是一系列24位数字.

例:

bigonumber <- 429382748394831049284934
Run Code Online (Sandbox Code Playgroud)

当我导入它使用任一data.table::freadread.csv,它显示为在指数格式数字(EG:4.293827e + 23).

options(digits=...) 由于该数字超过22位,因此无效.

当我做

as.character(bigonumber) 
Run Code Online (Sandbox Code Playgroud)

我得到的是"4.29382748394831e + 23"

有没有办法bigonumber转换为字符串并将所有数字显示为字符?我不需要对它进行任何数学计算,但我确实需要搜索它并dplyr加入它.

导入后我需要这个,因为列号因月而异.

(是的,在完美的世界中,我的上游数据提供者会使用哈希而不是长数和静态列数,每个月都保持相同,但我不能指示它们.)

r data.table

20
推荐指数
2
解决办法
5009
查看次数

从 pd.read_sql 输出附加到 Pandas 数据帧

我来自 R,但由于各种原因需要在 Python 中执行此操作。这很可能是我的 Python 的基本 PEBKAC 问题,而不是 Pandas、PyODBC 或其他任何东西。

请多多包涵。

我当前的 Python 3 代码:

import pandas as pd
import pyodbc 
cnxn = pyodbc.connect(DSN="databasename", uid = "username", pwd = "password")

querystring = 'select order_number, creation_date from table_name where order_number = ?'

orders = ['1234',
'2345',
'3456',
'5678']

for i in orders:
   print(pd.read_sql(querystring, cnxn, params = [i]))
Run Code Online (Sandbox Code Playgroud)

我需要的是一个列名为“order_number”和“creation_date”的数据框。

代码输出的是: 在此处输入图片说明

抱歉截屏,无法在此处获取格式。

阅读dataframe.append page 后,我尝试了这个:

df = pd.DataFrame()

for i in orders:
       df.append(pd.read_sql(querystring, cnxn, params = [i]))
Run Code Online (Sandbox Code Playgroud)

这似乎运行良好(无论如何都没有抛出错误)。

但是当我尝试输出 df 时,我得到 …

python pyodbc dataframe pandas

7
推荐指数
1
解决办法
4253
查看次数

如何在Rvest中传递ssl_verifypeer?

我正试图用Rvest从$ JOB的内部网页上刮掉一张桌子.我已经使用这里列出的方法来获取xpath等.

我的代码非常简单:

library(httr)
library(rvest)
un = "username"; pw = "password"

thexpath <- "//*[@id="theFormOnThePage"]/fieldset/table"    

url1 <- "https://biglonghairyURL.do?blah=yadda"

stuff1 <- read_html(url1, authenticate(un, pw))
Run Code Online (Sandbox Code Playgroud)

这给我一个错误:"对等证书无法使用给定的CA证书进行身份验证."

撇开不向上到datedness证书的,我已经看到,它可能使用HTTR避免SSL验证使用set_config(config(ssl_verifypeer = 0L)).

如果我使用来自httr的GET(url1),这只会很好用,但重点是使用rvest自动抓取表格.

看看Rvesthttr的PDF ,似乎Rvest调用httr传递curl命令,而在httr中,你可以使用config().

那么,要完成三段论,我怎么能(或者甚至可能?)直接通过rvest :: read_html传递ssl_verifypeer = 0L?

我尝试了很多变化:

stuff1 <- read_html(url1, authenticate(un, pw), ssl_verifypeer = 0L)) 
stuff1 <- read_html(url1, authenticate(un, pw), config(ssl_verifypeer = 0L))) 
stuff1 <- with_config(config = config(ssl_verifypeer = 0L), read_html(url1, authenticate(un, pw)))
Run Code Online (Sandbox Code Playgroud)

并且所有这些都抛出相同的错误"对等证书无法使用给定的CA证书进行身份验证".

希望这是可能的,我只是没有把正确的语法放在一起?

有人建议使用RSelenium,但由于这是在受保护的VM中,安装java和/或新软件包需要采取国会行为(以及VP签收),这将是我的最后手段.

我非常感谢任何有关这方面的建议.

ssl curl r httr rvest

5
推荐指数
0
解决办法
1674
查看次数

PyODBC + Pandas + 参数化

我正在使用 PyODBC 通过名为 cnxn 的连接连接到 Oracle。

我有一个唯一标识符列表: list1 = [1234, 2345, 3456, 4567]

我也有一个疑问:

query1 = """
select * from tablename where unique_id = ?
""'
Run Code Online (Sandbox Code Playgroud)

我想要做的是使用这个标识符列表来创建一个熊猫数据框。

作为测试,我这样做了:

testid = "1234" (since Oracle wants a string as that id not an integer)
Run Code Online (Sandbox Code Playgroud)

但是,当我这样做时:

pd.read_sql(query1, cnxn, params = testid)
Run Code Online (Sandbox Code Playgroud)

我得到“sql 包含 1 个参数标记,但提供了 4 个。”

最终,我希望能够做这样的事情:

for i in list1:
    newdataframe.append(pd.read_sql(query1, cnxn, params = i))
Run Code Online (Sandbox Code Playgroud)

并让它吐出一个数据框。

我已经阅读了 PyODBC 上的文档,看起来它指定了 ? 作为参数。我也看过这个问题,它很相似,但我需要能够将结果输入到 Pandas 数据框中以进行进一步操作。

我想如果我能让 testid 工作,我就会走上正轨。

谢谢

python pyodbc pandas

2
推荐指数
1
解决办法
4162
查看次数

在函数中使用Dplyr创建新数据框

我正在尝试使用R 3.2.2从dplyr 0.4.3函数创建新的数据框。

我想做的是使用dplyr :: filter创建一些新的数据帧,以将数据从一个巨大的数据帧中分离为一堆较小的数据帧。

对于可重现的基本案例沼泽简单示例,我使用了以下示例:

filter(mtcars, cyl == 4)
Run Code Online (Sandbox Code Playgroud)

我知道我需要将其分配给它自己的数据框,因此我从以下内容开始:

paste("Cylinders:", x, sep = "") <- filter(mtcars, cyl == 4))
Run Code Online (Sandbox Code Playgroud)

那没有用-它给了我在这里发现的错误:赋值扩展为非语言对象

从那里,我发现了这一点:在R中使用粘贴创建变量名

(也是上述作者的大事)

这使我想到了这一点,它起作用了:

assign(paste("gears_cars_cylinders", 4, sep = "_"), filter(mtcars, cyl == 4)) %>% 
    group_by(gear) %>% 
    summarise(number_of_cars = n())
Run Code Online (Sandbox Code Playgroud)

通过“工作”,我的意思是我得到一个名为gears_cars_cylinders_4的数据框,其中包含来自

filter(mtcars, cyl == 4) %>% 
        group_by(gear) %>% 
        summarise(number_of_cars = n())
Run Code Online (Sandbox Code Playgroud)

但最终,我认为我需要将整个东西包装到一个函数中,并能够将其的柱面数提供给它mtcars$cyl。我在想什么plyr::ldply(mtcars$cyl, function_name)

在我的实际数据中,我需要分解大约70个不同的类,以分成单独的数据框,然后放入DT::datatableShiny中的选项卡,这真是一团糟。无论如何。

当我尝试这个:

    function_name <- function(x){
    assign(paste("gears_cars_cylinders", x, sep = "_"), filter(mtcars, cyl == x)) %>% 
        group_by(gear) %>% 
        summarise(number_of_cars …
Run Code Online (Sandbox Code Playgroud)

r dplyr

0
推荐指数
1
解决办法
879
查看次数

标签 统计

r ×3

pandas ×2

pyodbc ×2

python ×2

curl ×1

data.table ×1

dataframe ×1

dplyr ×1

httr ×1

rvest ×1

ssl ×1