小编EFL*_*EFL的帖子

从函数向Pandas Dataframe添加多个列

我有一个mydf有两列的pandas数据框,两列都是datetime数据类型:mydatemytime.我要添加三个多列:hour,weekday,和weeknum.

def getH(t): #gives the hour
    return t.hour
def getW(d): #gives the week number
    return d.isocalendar()[1] 
def getD(d): #gives the weekday
    return d.weekday() # 0 for Monday, 6 for Sunday

mydf["hour"] = mydf.apply(lambda row:getH(row["mytime"]), axis=1)
mydf["weekday"] = mydf.apply(lambda row:getD(row["mydate"]), axis=1)
mydf["weeknum"] = mydf.apply(lambda row:getW(row["mydate"]), axis=1)
Run Code Online (Sandbox Code Playgroud)

该代码段有效,但它的计算效率不高,因为它至少循环数据帧三次.我想知道是否有更快和/或更优化的方法来做到这一点.例如,使用zipmerge?例如,如果我只创建一个返回三个元素的函数,我该如何实现呢?为了说明,该功能将是:

def getHWd(d,t):
    return t.hour, d.isocalendar()[1], d.weekday()
Run Code Online (Sandbox Code Playgroud)

python pandas

31
推荐指数
3
解决办法
3万
查看次数

[R] |中的单热编码 分类为虚拟变量

我需要创建一个新的数据帧nDF,它将所有分类变量二进制化,同时保留数据帧DF中的所有其他变量.例如,我有以下特征变量:RACE(4种类型)和AGE,以及一个名为CLASS的输出变量.

DF =

              RACE     AGE (BELOW 21)      CLASS
Case 1    HISPANIC                  0          A
Case 2       ASIAN                  1          A
Case 3    HISPANIC                  1          D
Case 4   CAUCASIAN                  1          B

我希望将其转换为具有五(5)个变量或四(4)个变量的nDF:

          RACE.1    RACE.2    RACE.3      AGE (BELOW 21)     CLASS
Case 1         0         0         0                   0         A
Case 2         0         0         1                   1         A
Case 3         0         0         0                   1         D
Case 4         0         1         0                   1         B

我熟悉变量DF $ RACE 的治疗对比.但是,如果我实施

contrasts(DF$RACE) = contr.treatment(4)
Run Code Online (Sandbox Code Playgroud)

我得到的仍然是三个变量的DF,但是变量DF …

r categorical-data

18
推荐指数
1
解决办法
3万
查看次数

R:使用函数向数据框添加新列

我有一个数据框df,有两列,术语频率.我还有一个术语列表,其中给定的ID存储在一个名为的向量中indices.为了说明这两个信息,我有以下内容:

> head(indices)
   Term
1    hello
256  i
33   the
Run Code Online (Sandbox Code Playgroud)

此外,对于数据框.

> head(df)
   Term  Freq
1  i     24
2  hello 12
3  the   28
Run Code Online (Sandbox Code Playgroud)

我想在df被调用中添加一个列,TermID它只是向量中术语的索引indices.我尝试过使用dplyr::mutate但无济于事.这是我的代码如下

library(dplyr)

whichindex <- function(term){
              ind <- which(indices == as.character(term))
              ind}

mutate(df, TermID = whichindex(Term))
Run Code Online (Sandbox Code Playgroud)

我得到的输出是一个df有一个新列的名称TermID,但所有的值TermID都是相同的.

有人能帮我弄清楚我做错了什么吗?如果你能在[R]中推荐一种更有效的算法,那也很不错.我已经用Python实现了这个,我没有遇到过这样的问题.

提前致谢.

r dplyr

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

seaborn:如何在分组条形图上添加误差线

我有一个的数据帧df有四列:CandidateSample_SetValues,和ErrorCandidate例如,该列具有三个唯一条目:[X, Y, Z]并且我们有三个样本集,因此也Sample_Set具有三个唯一值:[1,2,3]。df 大致如下所示。

Candidate,Sample_Set,Values,Error
X,1,20,50
Y,1,10,50
Z,1,10,50
X,2,200,30
Y,2,101,30
Z,2,99,30
X,3,1999,10
Y,3,998,10
Z,3,1003,10
Run Code Online (Sandbox Code Playgroud)

我正在使用使用x="Candidate", y="Values",来创建一个分组的条形图hue="Sample_Set"。一切都很好,直到我尝试使用名为Error. 我正在使用以下代码。

import seaborn as sns

ax = sns.factorplot(x="Candidate", y="Values", hue="Sample_Set", data=df,
                    size=8, kind="bar")
Run Code Online (Sandbox Code Playgroud)

如何合并错误?

我会很感激这个任务的解决方案或更优雅的方法。

python matplotlib python-2.7 pandas seaborn

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

标签 统计

pandas ×2

python ×2

r ×2

categorical-data ×1

dplyr ×1

matplotlib ×1

python-2.7 ×1

seaborn ×1