我想计算过去 3 个滚动行中的最大值,忽略NaN我是否看到它们。我以为这skipna会做到这一点,但事实并非如此。我怎么能忽略NaN,以及应该做什么skipna?
在这段代码中
import pandas as pd
df = pd.DataFrame({'sales': [25, 20, 14]})
df['max'] = df['sales'].rolling(3).max(skipna=True)
print(df)
Run Code Online (Sandbox Code Playgroud)
最后一列是
sales max
0 25 NaN
1 20 NaN
2 14 25.0
Run Code Online (Sandbox Code Playgroud)
但我希望它是
sales max
0 25 25.0
1 20 25.0
2 14 25.0
Run Code Online (Sandbox Code Playgroud) 我想创建一个矩阵(A),其中元素是另一个矩阵(B)的每四行的平均值.例如,矩阵A中第1行的元素应该是矩阵B中第1行到第4行的平均值.目前我已经使用了一个循环函数来获得它,但是矩阵的大小非常大,这使得循环很有时间耗时.我想知道是否有更好的方法可以做到这一点.这是一个例子
B = matrix(runif(10000, 0, 10), 100, 100)
A = matrix(0, floor(dim(B)[1]/4), dim(B)[2])
for (im in 1: floor(dim(B)[1]/4)){
A[im, ] = colMeans(as.matrix(B[c((((im - 1)*4) + 1):(im*4)), ]))
}
Run Code Online (Sandbox Code Playgroud) 我有这样的数据帧:
T data
0 0 10
1 1 20
2 2 30
3 3 40
4 4 50
5 0 5
6 1 13
7 2 21
8 0 3
9 1 7
10 2 11
11 3 15
12 4 19
Run Code Online (Sandbox Code Playgroud)
值T是从0到特定值的序列,其中最大数量可以在序列之间不同.通常,值data不是等间距,现在仅用于演示目的.
我想要实现的是添加第三列 dataDiv,其中data某个序列的每个值除以T = 0属于相应序列的值.在我的情况下,我有3个序列,对于第一个序列,我想将每个值除以10,在第二个序列中,每个值应除以5,第三个除以3.因此预期结果如下所示:
T data dataDiv
0 0 10 1.000000
1 1 20 2.000000
2 2 30 3.000000
3 3 40 4.000000
4 4 50 5.000000
5 …Run Code Online (Sandbox Code Playgroud) 编写一个接受输入列表的函数,并返回一个仅包含唯一元素的新列表(元素只应在列表中出现一次,并且元素的顺序必须保留为原始列表.).
def unique_elements (list):
new_list = []
length = len(list)
i = 0
while (length != 0):
if (list[i] != list [i + 1]):
new_list.append(list[i])
i = i + 1
length = length - 1
'''new_list = set(list)'''
return (new_list)
#Main program
n = int(input("Enter length of the list: "))
list = []
for i in range (0, n):
item = int(input("Enter only integer values: "))
list.append(item)
print ("This is your list: ", list)
result = unique_elements (list)
print (result) …Run Code Online (Sandbox Code Playgroud) 我有json文件,如下所示:
{
"K1": {
"p": [
"A"
],
"s": [
"B",
"C"
]
},
"K2": {
"p": [
"A",
"F"
],
"s": [
"G",
"H",
"J"
]
}
}
Run Code Online (Sandbox Code Playgroud)
我可以轻松阅读这些数据:
import json
with open('json_lists_to_sets.json') as fi:
data = json.load(fi)
Run Code Online (Sandbox Code Playgroud)
然后data看起来如下:
{u'K2': {u'p': [u'A', u'F'], u's': [u'G', u'H', u'J']}, u'K1': {u'p': [u'A'], u's': [u'B', u'C']}}
Run Code Online (Sandbox Code Playgroud)
然而,对于我的进一步分析,最好使用sets而不是lists.我可以在读完数据后转换lists为sets:
for vi in data.values():
vi['p'] = set(vi['p'])
vi['s'] = set(vi['s'])
Run Code Online (Sandbox Code Playgroud)
这给了我想要的输出:
print data['K2']
Run Code Online (Sandbox Code Playgroud)
产量
{u'p': …Run Code Online (Sandbox Code Playgroud) 假设我有一个像这样的数据框:
df = pd.DataFrame({'foo':[1, 2], 'bar': [3, 4], 'xyz': [5, 6]})
bar foo xyz
0 3 1 5
1 4 2 6
Run Code Online (Sandbox Code Playgroud)
我现在想将包含的列放在oo第一个位置(即第 0 个索引);始终只有一列具有这种模式。
我目前使用filter两次和一个来解决这个问题concat:
pd.concat([df.filter(like='oo'), df.filter(regex='^((?!(oo)).)*$')], axis=1)
Run Code Online (Sandbox Code Playgroud)
这给出了所需的输出:
foo bar xyz
0 1 3 5
1 2 4 6
Run Code Online (Sandbox Code Playgroud)
我想知道是否有更有效的方法来做到这一点。
我想data.frames在R中合并两个
d1 <- data.frame(Id=1:3,Name=c("Yann","Anne","Sabri"),Age=c(21,19,31),Height=c(178,169,192),Grade=c(15,12,18))
d2 <- data.frame(Id=c(1,3,4),Name=c("Yann","Sabri","Jui"),Age=c(28,21,15),Sex=c("M","M","F"),City=c("Paris","Paris","Toulouse"))
Run Code Online (Sandbox Code Playgroud)
我想通过合并Id,并只保留Id,Name,Age,Sex并Grade在最后列data.frame.
我想出了一个冗长的代码来完成这项工作,但还有更好的方法吗?
dm <- data.frame(Id=unique(c(d1$Id,d2$Id)))
dm.d1.rows <- sapply(dm$Id, match, table = d1$Id)
dm.d2.rows <- sapply(dm$Id, match, table = d2$Id)
for(i in c("Name", "Age","Sex","Grade")) {
if(i %in% colnames(d1) && is.factor(d1[[i]]) || i %in% colnames(d2) && is.factor(d2[[i]])) dm[[i]]<- factor(rep(NA,nrow(dm)),
levels=unique(c(levels(d1[[i]]),levels(d2[[i]]))))
else dm[[i]]<- rep(NA,nrow(dm))
if(i %in% colnames(d1)) dm[[i]][!is.na(dm.d1.rows)] <- d1[[i]][na.exclude(dm.d1.rows)]
if(i %in% colnames(d2)) dm[[i]][!is.na(dm.d2.rows)] <- d2[[i]][na.exclude(dm.d2.rows)]
}
Run Code Online (Sandbox Code Playgroud) 我有两列,例如agent_email 和workingcore。在努力核心中,Y 表示不满意,N 表示满意。
列如下所示:
agent_email effortscore.
ab 1
ab 0
xy 1
xy 0
Run Code Online (Sandbox Code Playgroud)
formula=(total 1's / total response)*100.
Run Code Online (Sandbox Code Playgroud)
我希望输出像
ab 50% csat
xy 100% csat
Run Code Online (Sandbox Code Playgroud) 假设我有一个numpy数组a并b像这样创建:
a = np.arange(3)
b = a
Run Code Online (Sandbox Code Playgroud)
如果我现在改变b例如这样
b[0] = 100
Run Code Online (Sandbox Code Playgroud)
并打印a, b, 他们的ids 和.flags
print a
print a.flags
print b
print b.flags
print id(a)
print id(b)
Run Code Online (Sandbox Code Playgroud)
我得到
[100 1 2]
C_CONTIGUOUS : True
F_CONTIGUOUS : True
OWNDATA : True
WRITEABLE : True
ALIGNED : True
UPDATEIFCOPY : False
[100 1 2]
C_CONTIGUOUS : True
F_CONTIGUOUS : True
OWNDATA : True
WRITEABLE : True
ALIGNED : …Run Code Online (Sandbox Code Playgroud) (1) 运行 Windows 8 (2) 下载安装,Anaconda for Windows,PYTHON 2.7
(3) 从 Anaconda 提示:
conda install scikit-learn
Fetching package metadata: ....
Solving package specifications: .....................
All requested packages already installed.
packages in environment at C:\Users\Joey\Anaconda2:
scikit-learn 0.17 np110py27_1
Run Code Online (Sandbox Code Playgroud)
(4) 推出Spyder
(5) 这样就ok了,包找到了。
import sklearn
Run Code Online (Sandbox Code Playgroud)
(6) sklearn 的 Tab 补全(在 Spyder 中),显示:
sklearn.base
sklearn.clone
sklearn.externals
sklearn.re
sklearn.setup_module
sklearn.sys
sklearn.utils
sklearn.warnings
Run Code Online (Sandbox Code Playgroud)
(6) 因此,当运行http://scikit-learn.org/stable/示例中的代码片段时。
from sklearn import DecisionTreeRegressor
Traceback (most recent call last):
File "<ipython-input-2-5aa62260685f>", line 1, in <module>
from sklearn import …Run Code Online (Sandbox Code Playgroud) python ×8
pandas ×4
dataframe ×3
python-3.x ×2
r ×2
arrays ×1
copy ×1
json ×1
matrix ×1
numpy ×1
performance ×1
python-2.7 ×1
regex ×1
scikit-learn ×1
windows ×1