我有一个mydf有两列的pandas数据框,两列都是datetime数据类型:mydate和mytime.我要添加三个多列: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)
该代码段有效,但它的计算效率不高,因为它至少循环数据帧三次.我想知道是否有更快和/或更优化的方法来做到这一点.例如,使用zip或merge?例如,如果我只创建一个返回三个元素的函数,我该如何实现呢?为了说明,该功能将是:
def getHWd(d,t):
return t.hour, d.isocalendar()[1], d.weekday()
Run Code Online (Sandbox Code Playgroud) 我需要创建一个新的数据帧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 …
我有一个数据框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实现了这个,我没有遇到过这样的问题.
提前致谢.
我有一个熊猫的数据帧df有四列:Candidate,Sample_Set,Values,和Error。Candidate例如,该列具有三个唯一条目:[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)
我正在使用seaborn使用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)
如何合并错误?
我会很感激这个任务的解决方案或更优雅的方法。