嘿,我是Pandas的新手,我刚刚遇到过df.query().
df.query()当您可以使用括号表示法直接过滤Dataframe时,为什么人们会使用?官方的熊猫教程似乎也更喜欢后一种方法.
带括号表示法:
df[df['age'] <= 21]
Run Code Online (Sandbox Code Playgroud)
用pandas查询方法:
df.query('age <= 21')
Run Code Online (Sandbox Code Playgroud)
除了已经提到的一些风格或灵活性差异之外,还有一个规范首选 - 即在大型数据帧上执行操作?
有没有人能够在RStudio中启用或使用vim模式?我正在使用新版本的RStudio,(3.3.2(2016-10-31)).唯一的说明来自三四年前,GUI的屏幕截图与我使用的截图不同.(tools-> global options-> code-> editing).没有复选框可以启用它.我非常希望它仍然存在
我有一个数据框,其中有投票和政党标签
dat <- data.frame( v1=c(25, 0, 70),
v2=c(75, 100, 20),
v3=c(0, 0, 10),
l1=c("pA", ".", "pB"),
l2=c("pB", "pC", "pC"),
l3=c(".", ".", "pD") )
Run Code Online (Sandbox Code Playgroud)
这样每行就是一个分析单位.只有投票方才需要考虑,此功能可以提取正面投票或相应的标签
getpos <- function(vector, vorl="v"){ # change to "l" to report labels
vot <- vector[grep( "v", colnames(vector) )];
lab <- vector[grep( "l", colnames(vector) )];
if (vorl=="v") {vot[vot>0]} else {lab[vot>0]};
}
getpos(dat[1,]) # votes for obs 1
getpos(dat[1,], vorl="l") # labels for obs 1
Run Code Online (Sandbox Code Playgroud)
我希望在数据帧dat的每一行中运行函数getpos,以便生成具有不同长度的投票/标签向量的列表.应用该函数不会返回我期望的内容:
apply(X=dat, MARGIN=1, FUN=getpos, vorl="l")
Run Code Online (Sandbox Code Playgroud)
谁能发现问题?相关,这可以更有效地实现吗?
我的R脚本的问题是它花了太多时间,我考虑的主要解决方案是并行化它.我不知道从哪里开始.
我的代码看起来像这样:
n<- nrow (aa)
output <- matrix (0, n, n)
akl<- function (dii){
ddi<- as.matrix (dii)
m<- rowMeans(ddi)
M<- mean(ddi)
r<- sweep (ddi, 1, m)
b<- sweep (r, 2, m)
return (b + M)
}
for (i in 1:n)
{
A<- akl(dist(aa[i,]))
dVarX <- sqrt(mean (A * A))
for (j in i:n)
{
B<- akl(dist(aa[j,]))
V <- sqrt (dVarX * (sqrt(mean(B * B))))
output[i,j] <- (sqrt(mean(A * B))) / V
}
}
Run Code Online (Sandbox Code Playgroud)
我想在不同的cpu上并行化.我怎样才能做到这一点?我看到了SNOW包,它适合我的目的吗?感谢您的建议,Gab