我知道如果我有一个超过1列的数据框,我可以使用
colnames(x) <- c("col1","col2")
Run Code Online (Sandbox Code Playgroud)
重命名列.如果它只是一列,我该怎么做?意味着矢量或数据框中只有一列.
例:
trSamp <- data.frame(sample(trainer$index, 10000))
head(trSamp )
# sample.trainer.index..10000.
# 1 5907862
# 2 2181266
# 3 7368504
# 4 1949790
# 5 3475174
# 6 6062879
ncol(trSamp)
# [1] 1
class(trSamp)
# [1] "data.frame"
class(trSamp[1])
# [1] "data.frame"
class(trSamp[,1])
# [1] "numeric"
colnames(trSamp)[2] <- "newname2"
# Error in names(x) <- value :
# 'names' attribute [2] must be the same length as the vector [1]
Run Code Online (Sandbox Code Playgroud) 我想要做的是为同一列使用多个CASE WHEN条件.
这是我的查询代码:
SELECT Url='',
p.ArtNo,
p.[Description],
p.Specification,
CASE
WHEN 1 = 1 or 1 = 1
THEN 1
ELSE 0
END as Qty,
p.NetPrice,
[Status] = 0
FROM Product p (NOLOCK)
Run Code Online (Sandbox Code Playgroud)
但是,我想要做的是对同一列"qty"使用多个WHEN.
如下面的代码所示:
IF
// CODE
ELSE IF
// CODE
ELSE IF
// CODE
ELSE
// CODE
Run Code Online (Sandbox Code Playgroud) 我是python和pandas的新手.我正在尝试将tsv文件加载到熊猫中DataFrame.
这就是我正在尝试的错误和我得到的错误:
>>> df1 = DataFrame(csv.reader(open('c:/~/trainSetRel3.txt'), delimiter='\t'))
Traceback (most recent call last):
File "<pyshell#28>", line 1, in <module>
df1 = DataFrame(csv.reader(open('c:/~/trainSetRel3.txt'), delimiter='\t'))
File "C:\Python27\lib\site-packages\pandas\core\frame.py", line 318, in __init__
raise PandasError('DataFrame constructor not properly called!')
PandasError: DataFrame constructor not properly called!
Run Code Online (Sandbox Code Playgroud) 我正在使用该data.table软件包来加速数据集上的一些摘要统计收集.
我很好奇是否有一种方法可以按多列分组.我的数据如下:
purchaseAmt adShown url
15.54 00001 150000001
4.82 00002 150000001
157.99 05005 776300044
... ... ...
Run Code Online (Sandbox Code Playgroud)
我可以这样做:
adShownMedian <- df1[,median(purchaseAmt),by="adShown"]
Run Code Online (Sandbox Code Playgroud)
获得每个广告的中位数.我怎么会做一些结合adShown和url?
我试过这个:
adShownMedian <- df1[,median(purchaseAmt),by=c("adShown","url")]
Run Code Online (Sandbox Code Playgroud)
但没有运气.
有什么建议?
可能重复:
从数据框中删除多个元素的标准方法
我知道在R中,如果你正在搜索另一个组的子集或基于id的匹配,你会使用类似的东西
subset(df1, df1$id %in% idNums1)
Run Code Online (Sandbox Code Playgroud)
我的问题是如何做相反的事情或选择不匹配ids矢量的项目.
我尝试使用!但收到错误消息
subset(df1, df1$id !%in% idNums1)
Run Code Online (Sandbox Code Playgroud)
我认为我的备份是这样做的:
matches <- subset(df1, df1$id %in% idNums1)
nonMatches <- df1[(-matches[,1]),]
Run Code Online (Sandbox Code Playgroud)
但我希望有一些更高效的东西.
我有一个50k行的熊猫数据框.我正在尝试添加一个新列,它是从1到5的随机生成的整数.
如果我想要50k随机数我会使用:
df1['randNumCol'] = random.sample(xrange(50000), len(df1))
Run Code Online (Sandbox Code Playgroud)
但为此,我不知道该怎么做.
R中的旁注,我会这样做:
sample(1:5, 50000, replace = TRUE)
Run Code Online (Sandbox Code Playgroud)
有什么建议?
我试图从数据集的多个子集中收集一些数据,并需要创建一个数据框来收集结果.我的问题是不知道如何创建具有已定义列数的空数据框,而实际上没有数据放入其中.
collect1 <- c() ## i'd like to create empty df w/ 3 columns: `id`, `max1` and `min1`
for(i in 1:10){
collect1$id <- i
ss1 <- subset(df1, df1$id == i)
collect1$max1 <- max(ss1$value)
collect1$min1 <- min(ss1$value)
}
Run Code Online (Sandbox Code Playgroud)
我觉得这个问题非常愚蠢(我几乎觉得我之前已经问过它但是找不到它)但是非常感谢任何帮助.
我有一个股票价格数据集已经四舍五入到小数点后两位(1234.56).我现在正试图舍入到每个股票不同的特定值.这里有些例子:
Current Stock Price Minimum Tick Increment Desired Output
123.45 .50 123.50
155.03 .10 155.00
138.24 .50 138.00
129.94 .10 129.90
... ... ...
Run Code Online (Sandbox Code Playgroud)
我不是很确定如何做到这一点,但我愿意接受建议.
我正在尝试glmnet在数据集上使用该包.我正在使用cv.glmnet()获取lambda值glmnet().这是数据集和错误消息:
> head(t2)
X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12
1 1 1 0.7661266 45 2 0.80298213 9120 13 0 6 0 2
2 2 0 0.9571510 40 0 0.12187620 2600 4 0 0 0 1
3 3 0 0.6581801 38 1 0.08511338 3042 2 1 0 0 0
4 4 0 0.2338098 30 0 0.03604968 3300 5 0 0 0 0
5 5 0 0.9072394 49 1 0.02492570 …Run Code Online (Sandbox Code Playgroud)