小编Cle*_*leb的帖子

Pandas,滚动 max 忽略 NaN

我想计算过去 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)

python pandas

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

如何通过平均R中另一个矩阵的元素来创建矩阵?

我想创建一个矩阵(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)

r matrix

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

如何规范化不同范围的数据框列中的值

我有这样的数据帧:

    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)

python performance normalization dataframe pandas

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

如何在python中找到列表中的唯一元素?(不使用套装)

编写一个接受输入列表的函数,并返回一个仅包含唯一元素的新列表(元素只应在列表中出现一次,并且元素的顺序必须保留为原始列表.).

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)

python python-2.7 python-3.x

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

如何在加载json文件时将所有列表转换为集合

我有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.我可以在读完数据后转换listssets:

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)

python json

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

如何根据正则表达式对列重新排序?

假设我有一个像这样的数据框:

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)

我想知道是否有更有效的方法来做到这一点。

python regex pandas

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

合并异构数据框架

我想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,SexGrade在最后列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)

r dataframe

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

如何使用 Pandas 找到客户满意度?

我有两列,例如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)

python dataframe python-3.x pandas

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

如何找到所有具有相同ID的变量?

假设我有一个numpy数组ab像这样创建:

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)

python arrays numpy copy

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

从 sklearn 导入 DecisionTreeRegressor &gt;&gt; ImportError

(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 windows scikit-learn

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