我通过使用pandas melt和groupby以及值和变量创建了以下数据帧.我使用了以下内容:
df2 = pd.melt(df1).groupby(['value','variable'])['variable'].count().unstack('variable').fillna(0)
Percentile Percentile1 Percentile2 Percentile3
value
None 0 16 32 48
bottom 0 69 85 88
top 0 69 88 82
mediocre 414 260 209 196
Run Code Online (Sandbox Code Playgroud)
我正在寻找创建一个排除'None'行的输出,并创建'bottom','top'和'mediocre'行的总和的百分比.欲望输出如下.
Percentile Percentile1 Percentile2 Percentile3
value
bottom 0% 17.3% 22.3% 24.0%
top 0% 17.3% 23.0% 22.4%
mediocre 414% 65.3% 54.7% 53.6%
Run Code Online (Sandbox Code Playgroud)
我正在努力的一个主要部分是创建一个新的行来等于输出.任何帮助将不胜感激!
我有不同长度的矢量.例如:
df1
[1] 1 95 5 2 135 4 3 135 4 4 135 4 5 135 4 6 135 4
df2
[1] 1 70 3 2 110 4 3 112 4
Run Code Online (Sandbox Code Playgroud)
我正在尝试在R中编写一个脚本,以便让任何向量进入函数或for循环,它返回一个三列的数据帧.因此,每个输入向量的单独数据帧.每个向量是三的倍数(因此,三列).在编写函数方面我对R很新,似乎无法解决这个问题.这是我的尝试:
newdf = c()
ld <- length(df1)
ld_mult <- length(df1)/3
ld_seq <- seq(from=1,to=ld,by=3)
ld_seq2 < ld_seq +2
for (i in 1:ld_mult) {
newdf[i,] <- df1[ld_seq[i]:ld_seq2[i]]
}
Run Code Online (Sandbox Code Playgroud)
我想要的输出df1将是:
1 95 5
2 135 4
3 135 4
4 135 4
5 135 4
6 135 4
Run Code Online (Sandbox Code Playgroud) 我在操纵R中的向量时遇到了麻烦.我有一个看起来像这样的向量:
stack <- append(append(rep(0,8),c(1,0,0,0,0,1)),rep(0,6))
[1] 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0
Run Code Online (Sandbox Code Playgroud)
我的总体目标是操纵矢量:
*当有1时,在向量1中创建接下来的三个值.*将原始1更改为0.
所以最终矢量看起来像:
[1] 0 0 0 0 0 0 0 0 0 1 1 1 0 0 1 1 1 0 0 0
Run Code Online (Sandbox Code Playgroud)
第二部分我可以做到:
replace(stack,which(stack == 1),0)
Run Code Online (Sandbox Code Playgroud)
但我无法弄清楚如何有效地完成第一个.任何帮助将不胜感激.
我有一个关于 python 如何处理字典中的数据的问题。假设我有一个简单的字典,其中一个数字作为键,一个数字作为值,如下所示:
a = { 5: 3, 20: 1, 1: 1, 5: 2, 100: 3, 11: 6,
14: 1, 15: 2, 16: 4, 17: 2, 25: 1, 19: 1 }
Run Code Online (Sandbox Code Playgroud)
我想遍历这本字典并打印出键。每次我循环遍历字典(如下所示)时,它都会按升序打印键。
这就是我想要它做的,但我想知道,据我所知,为什么会发生这种情况?它每次都会自动按升序排序吗?正如您在上面的字典中看到的,键显然不是按升序排列的,但下面的输出按升序打印它们。
我只是想获得一个清晰的理解,任何帮助将不胜感激。谢谢
for i in a:
print i
Run Code Online (Sandbox Code Playgroud)
输出:
1
5
11
14
15
16
17
19
20
25
100
Run Code Online (Sandbox Code Playgroud) 我对python有些新意 - 我至少认为我对语法有了深刻的理解,但似乎无法弄清楚为什么这个函数不起作用.
我想写一个函数来大写字符串的字母.
string = 'Bryan'
def caps(word):
word.upper()
caps(string)
Run Code Online (Sandbox Code Playgroud)
我在这里不理解什么?对我来说似乎很基本,但无法弄清楚.任何帮助,将不胜感激!
我试图使用这个资源: 如何在String中间打印R变量
我仍然无法达到我想要的东西.
我希望创建一个每周运行一次的网络刮刀,它会刮掉七个网页,每个网页都有一个日期.一个示例网站(不是这个帖子的真实网站)将是:" http://www.stevel.com/log/?xid=2275644&dd=2014-12-20 ".因此,我有七个日期,我想创建七个字符串,在字符串的末尾插入日期.
#create dates needed
dates <- seq.Date(as.Date(Sys.Date() - 6) , Sys.Date(), by='days')
dates
[1] "2015-01-15" "2015-01-16" "2015-01-17" "2015-01-18" "2015-01-19" "2015-01-20"
[7] "2015-01-21"
Run Code Online (Sandbox Code Playgroud)
在创建一个循环之前我的微弱尝试试图产生一个观察:
cat(sprintf("http://www.stevel.com/log/?xid=2275644&dd="\"%s"\, dates[1]))
Run Code Online (Sandbox Code Playgroud)
期望的最终输出将是:
[1] "http://www.stevel.com/log/?xid=2275644&dd=2015-01-15"
"http://www.stevel.com/log/?xid=2275644&dd=2015-01-16"
"http://www.stevel.com/log/?xid=2275644&dd=2015-01-17"
"http://www.stevel.com/log/?xid=2275644&dd=2015-01-18"
"http://www.stevel.com/log/?xid=2275644&dd=2015-01-19"
"http://www.stevel.com/log/?xid=2275644&dd=2015-01-20"
[7] "http://www.stevel.com/log/?xid=2275644&dd=2015-01-21"
Run Code Online (Sandbox Code Playgroud)
我在R中明确地将一个日期插入字符串中的问题.任何帮助指出我正确的方向将不胜感激