我有以下DataFrame:
In [1]:
import pandas as pd
df = pd.DataFrame({'a': [1,2,3], 'b': [2,3,4], 'c':['dd','ee','ff'], 'd':[5,9,1]})
df
Out [1]:
a b c d
0 1 2 dd 5
1 2 3 ee 9
2 3 4 ff 1
Run Code Online (Sandbox Code Playgroud)
我想添加一列'e',它是列的总和'a','b'和'd'.
穿过论坛,我觉得这样的东西会起作用:
df['e'] = df[['a','b','d']].map(sum)
Run Code Online (Sandbox Code Playgroud)
但不是!
我想实现具有列列表['a','b','d']和df输入的操作.
我有以下data.table:
dt <- data.table(col1 = rep("a",6), col2 = c(1,1,1,2,3,1))
Run Code Online (Sandbox Code Playgroud)
现在我想用值"bigDog"替换col2中的所有1.我可以使用data.frame精神来做到这一点:
dt$col2[dt$col2==1,] <- "bigDog"
Run Code Online (Sandbox Code Playgroud)
但我想知道是否有不同的方式,更多"data.table oriented"?
我在Windows中使用makefile来推送Unix服务器上的一些文件(这里是我的makefile的同一个文件夹中的文本文件"blob.txt").我的makefile脚本是:
setup:
pscp blob.txt username@hostname:/folder/
Run Code Online (Sandbox Code Playgroud)
我启动命令提示符,进入blob.txt和makefile所在的文件夹并输入:
make setup
Run Code Online (Sandbox Code Playgroud)
结果如下:
pscp blob.txt username@hostname:/folder/
process_begin: CreateProcess(NULL, pscp blob.txt username@hostname:/folder/, ...) failed.
make (e=2): The system cannot find the file specified.
make: *** [setup] Error 2
Run Code Online (Sandbox Code Playgroud)
在#fail中...而如果我在命令提示符中直接输入命令:
pscp blob.txt username@hostname:/folder/
Run Code Online (Sandbox Code Playgroud)
它有效......我真的很想知道为什么.
我有以下data.frame df:
df = data.frame(col1 = c('a','a','a','a','a','b','b','c','d'),
col2 = c('a','a','a','b','b','b','b','a','a'),
height1 = c(NA,32,NA,NA,NA,NA,NA,25,NA),
height2 = c(31,31.5,NA,NA,11,12,13,NA,NA),
col3 = 1:9)
# col1 col2 height1 height2 col3
#1 a a NA 31.0 1
#2 a a 32 31.5 2
#3 a a NA NA 3
#4 a b NA NA 4
#5 a b NA 11.0 5
#6 b b NA 12.0 6
#7 b b NA 13.0 7
#8 c a 25 NA 8
#9 d a NA NA 9 …Run Code Online (Sandbox Code Playgroud) 我在使用apply函数时遇到一些问题,在不需要时将参数传递给函数.我知道apply不知道如何处理可选参数,只是在函数上传递它们.
但无论如何,这就是我想做的事情:
首先,我想指定一个我想要使用的函数列表.
functions <- list(length, sum)
Run Code Online (Sandbox Code Playgroud)
然后我想创建一个在数据集上应用这些指定函数的函数.
myFunc <- function(data, functions) {
for (i in 1:length(functions)) print(apply(X=data, MARGIN=2, FUN=functions[[i]]))
}
Run Code Online (Sandbox Code Playgroud)
这很好用.
data <- cbind(rnorm(100), rnorm(100))
myFunc(data, functions)
[1] 100 100
[1] -0.5758939 -5.1311173
Run Code Online (Sandbox Code Playgroud)
但我还想为一些函数使用额外的参数,例如
power <- function(x, p) x^p
Run Code Online (Sandbox Code Playgroud)
哪个不能按我的意愿工作.如果我修改myFunc为:
myFunc <- function(data, functions, ...) {
for (i in 1:length(functions)) print(apply(X=data, MARGIN=2, FUN=functions[[i]], ...))
}
Run Code Online (Sandbox Code Playgroud)
functions 如
functions <- list(length, sum, power)
Run Code Online (Sandbox Code Playgroud)
然后尝试我得到的功能
myFunc(data, functions, p=2)
Error in FUN(newX[, i], ...) :
2 arguments passed to 'length' …Run Code Online (Sandbox Code Playgroud) 如果我检查sqrt函数的环境,我得到NULL:
> environment(sqrt)
NULL
Run Code Online (Sandbox Code Playgroud)
另一方面,split在基础包中也可以找到的功能具有以下环境:
> environment(split)
<environment: namespace:base>
Run Code Online (Sandbox Code Playgroud)
为什么这两个函数有不同的环境,NULL环境是什么意思?
使用该itertools工具,我有给定的数字列表的所有可能的排列,但如果列表如下:
List=[0,0,0,0,3,6,0,0,5,0,0]
Run Code Online (Sandbox Code Playgroud)
itertools 并不"知道"迭代零是浪费的工作,例如以下迭代将出现在结果中:
List=[0,3,0,0,0,6,0,0,5,0,0]
List=[0,3,0,0,0,6,0,0,5,0,0]
Run Code Online (Sandbox Code Playgroud)
它们是相同的但itertools只是取第一个零(例如)并将其移动到列表中的第四个位置,反之亦然.
问题是:我如何只迭代一些选定的数字并单独留下其他如零?它可以有或没有itertools.
我目前正在高维度的情况下用scikit试验Lasso.标签是Y_i(实数),特征是X_i(X_i是大小为d = 112的向量).我只有三对(Y_i,X_i).
d >> n = 3所以我们处于高维的情况.
import numpy as np
Y = np.array([ 0.24186978, 0.20693342, 0.00441244])
X0 = np.array([ 0.49019359, -0.11332346, 0.46826879, -0.13540658, 0.37022392, -0.23379722, 0.37143564, -0.2329437 , 0.37291492, -0.23186138, 0.37469679, -0.23055168, 0.30316716, -0.29125359, 0.30840626, -0.28652415, 0.44230139, -0.16121566, 0.42683712, -0.17683825, 0.32256713, -0.28145402, 0.3280964 , -0.27628293, 0.33245644, -0.27231986, 0.33670266, -0.26854582, 0.2643481 , -0.33007265, 0.27145917, -0.32347124, 0.3864629 , -0.21705415, 0.3808803 , -0.22279507, 0.27458751, -0.32943364, 0.28447461, -0.31990473, 0.2917428 , -0.3130335 , 0.29848329, -0.30676519, 0.22697144, -0.36744932, 0.2357466 , -0.35918381, 0.32553467, -0.27798238, 0.33200664, …Run Code Online (Sandbox Code Playgroud) 我有一个像这样的数据框:
Name Position Value
a 1 0.2
a 3 0.4
a 4 0.3
b 1 0.5
b 2 0.4
b 5 0.3
c 2 0.3
c 3 0.4
c 5 0.1
d 1 0.2
d 2 0.4
d 3 0.5
Run Code Online (Sandbox Code Playgroud)
我想这样做,以便每个Name的Position总是从1到5,并将NAs填入Value中,如下所示:
Name Position Value
a 1 0.2
a 2 NA
a 3 0.4
a 4 0.3
a 5 NA
b 1 0.5
b 2 0.4
b 3 NA
b 4 NA
b 5 0.3
c 1 NA
c 2 0.3 …Run Code Online (Sandbox Code Playgroud) 我在网上搜索并没有找到连接的包Thomson Reuters Eikon.
它是一个或多或少类似的财务数据源Bloomberg.通过R此软件包支持Bloomberg :
http://findata.org/r-name-redacted/
似乎什么都没有Reuters,但也许我完全错了?理想情况下,我想连接到Reuters终端并自动废弃一些信息R.
r ×6
dataframe ×3
python ×3
bash ×1
data.table ×1
environment ×1
function ×1
list ×1
makefile ×1
na ×1
pandas ×1
permutation ×1
pscp ×1
putty ×1
reuters ×1
scikit-learn ×1
sum ×1
windows ×1