小编fog*_*rit的帖子

Pandas:在DataFrame中创建聚合列

以下面的DataFrame为例,

In [83]:
df = pd.DataFrame({'A':[1,1,2,2],'B':[1,2,1,2],'values':np.arange(10,30,5)})
df
Out[83]:
   A  B  values
0  1  1      10
1  1  2      15
2  2  1      20
3  2  2      25
Run Code Online (Sandbox Code Playgroud)

生成包含其中一列的数据聚合的新列的简单方法是什么?

例如,如果我总结values项目A

In [84]:
df.groupby('A').sum()['values']
Out[84]:
A
1    25
2    45
Name: values
Run Code Online (Sandbox Code Playgroud)

我怎样才能得到

   A  B  values  sum_values_A
0  1  1      10            25
1  1  2      15            25
2  2  1      20            45
3  2  2      25            45
Run Code Online (Sandbox Code Playgroud)

python pandas

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

IPython notebook:将HTML笔记本转换为ipynb

我已将IPython笔记本转换为HTML格式,随后丢失了原始的ipynb文件.

有没有一种简单的方法从转换后的HTML文件生成原始笔记本文件?

python ipython jupyter jupyter-notebook nbconvert

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

JupyterLab:如何从笔记本中保存一个数字

我正在尝试使用新的JupyterLab并且无法保存数据.使用香草Jupyter笔记本,我可以双指点击(使用macOS,Safari或Chrome),我得到一个浏览器菜单,允许我复制或保存图形.

在JupyterLab中,此菜单由具有单元格相关功能的笔记本特定的菜单替换,如下所示:

在此输入图像描述

有没有办法可以直接从JupyterLab笔记本中保存一个数字?

jupyter jupyter-lab

20
推荐指数
2
解决办法
7742
查看次数

pandas:GroupBy .pipe()vs .apply()

在关于GroupBy对象的新方法的pandas文档的示例中.pipe(),.apply()接受相同lambda 的方法将返回相同的结果.

In [195]: import numpy as np

In [196]: n = 1000

In [197]: df = pd.DataFrame({'Store': np.random.choice(['Store_1', 'Store_2'], n),
   .....:                    'Product': np.random.choice(['Product_1', 'Product_2', 'Product_3'], n),
   .....:                    'Revenue': (np.random.random(n)*50+10).round(2),
   .....:                    'Quantity': np.random.randint(1, 10, size=n)})

In [199]: (df.groupby(['Store', 'Product'])
   .....:    .pipe(lambda grp: grp.Revenue.sum()/grp.Quantity.sum())
   .....:    .unstack().round(2))

Out[199]: 
Product  Product_1  Product_2  Product_3
Store                                   
Store_1       6.93       6.82       7.15
Store_2       6.69       6.64       6.77
Run Code Online (Sandbox Code Playgroud)

我可以看到pipe功能与applyDataFrame对象的不同之处,但不适用于GroupBy对象.有没有人对GroupBy 有什么解释或示例,pipe但没有apply

python python-3.x pandas pandas-groupby

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

MATLAB相当于Python的string.join()

在Python中,我可以轻松地加入字符串列表的内容,由一组字符分隔,这样:

>>> L = ["A","B","C"]
>>> string.join(L,"_")
'A_B_C'
Run Code Online (Sandbox Code Playgroud)

在MATLAB中,我可以通过这种方式连接字符串的单元格数组:

>> L = {'A','B','C'};
>> [L{:}] % or strcat(L{:}), with trimming of trailing spaces

ans =

ABC
Run Code Online (Sandbox Code Playgroud)

在MATLAB中是否有简单的命令模仿string.join添加分隔符的能力?

我知道这可以通过怪诞的结构来完成,例如

[sprintf('%s_',L{1:end-1}), L{end}]
Run Code Online (Sandbox Code Playgroud)

除其他外,还有一种更简单的方法吗?

matlab

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

在python鼻子测试中模拟flask.request

我正在为通过 Flask 下的路由调用的代码编写测试用例。我不想通过设置测试应用程序并调用命中路由的 URL 来测试代码,我想直接调用该函数。为了完成这项工作,我需要模拟 flask.request 并且我似乎无法管理它。谷歌/stackoverflow 搜索导致了很多答案,这些答案展示了如何设置一个测试应用程序,这又不是我想要做的。

代码看起来像这样。

somefile.py
-----------
from flask import request

def method_called_from_route():
    data = request.values

    # do something with data here

test_somefile.py
----------------
import unittest
import somefile

class SomefileTestCase(unittest.TestCase):

    @patch('somefile.request')
    def test_method_called_from_route(self, mock_request):
       # want to mock the request.values here
Run Code Online (Sandbox Code Playgroud)

我有两个问题。

(1) 如我在上面勾画的那样修补请求不起作用。我收到类似于“AttributeError: 'Blueprint' object has no attribute 'somefile'”的错误

(2) 如果我可以修补它,我不知道如何准确地模拟请求对象。它实际上没有 return_value 因为它不是一个函数。

我再次找不到任何关于如何做到这一点的例子,所以我觉得一个新问题是可以接受的。

python mocking nose

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

将点列表转换为numpy 2D数组

我正在使用genfromtxt来导入一个二维数组,该数组的所有值都列在表单的文本文件中(x和y是整数):

    x1   y1   z1
    x2   y2   z2
    :    :    :
Run Code Online (Sandbox Code Playgroud)

我正在使用下面的for循环,但我很确定必须采用一行方式来实现它.什么是更有效的方式来进行这种转换?

raw = genfromtxt(file,skip_header = 6)

xrange = ( raw[:,0].min() , raw[:,0].max() )
yrange = ( raw[:,1].min() , raw[:,1].max() )

Z = zeros(( xrange[1] - xrange[0] +1 , yrange[1] - yrange[0] +1 ))

for row in raw:
    Z[ row[0]-xrange[0] , row[1]-yrange[0] ] = row[2]
Run Code Online (Sandbox Code Playgroud)

python numpy

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

MATLAB:使用逻辑索引提取子矩阵

我正在为MATLAB中这个非常简单的问题寻找一个优雅的解决方案.假设我有一个矩阵

>> M = magic(5)

M =

    17    24     1     8    15
    23     5     7    14    16
     4     6    13    20    22
    10    12    19    21     3
    11    18    25     2     9 
Run Code Online (Sandbox Code Playgroud)

和形式的逻辑变量

I =

     0     0     0     0     0
     0     1     1     0     0
     0     1     1     0     0
     0     0     0     0     0
     0     0     0     0     0
Run Code Online (Sandbox Code Playgroud)

如果我尝试检索与值M相关联的元素,我会得到一个列向量1I

>> M(I)

ans =

     5
     6
     7
    13
Run Code Online (Sandbox Code Playgroud)

[5 7 ; 6 13]从这个逻辑索引中获取矩阵的最简单方法是什么?

如果我知道非零元素的形状 …

indexing matlab matrix addressing submatrix

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

Hadoop YARN:获取可用队列的列表

有没有一种方法可以从命令行获取所有可用的YARN队列的列表,而无需求助于分析capacity-scheduler.xml文件?

我正在使用Hadoop 2.7.2版

hadoop hadoop-yarn

7
推荐指数
2
解决办法
4903
查看次数

同时为多个结构字段分配值

我有一个遵循以下模式的matlab结构:

S.field1.data1
          ...
 .field1.dataN
   ...
 .fieldM.data1
          ...
 .fieldM.dataN
Run Code Online (Sandbox Code Playgroud)

我想data3同时从所有字段为一个数据字段(例如)分配值.这在语义上类似于:

S.*.data3 = value
Run Code Online (Sandbox Code Playgroud)

通配符"*"表示(field1,...,fieldM)结构中的所有字段.这是否可以在没有matlab循环的情况下完成?

matlab

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