小编Lon*_*Rob的帖子

对角化熊猫系列

我正在使用pandasPython 中非常可爱的库做一些矩阵代数。我真的很喜欢使用 Series 和 Dataframe 对象,因为能够命名行和列。

但是有没有一种巧妙的方法可以在保持行/列名称的同时对系列进行对角化呢?

考虑这个最小的工作示例:

>>> import pandas as pd
>>> s = pd.Series(randn(5), index=['a', 'b', 'c', 'd', 'e'])
>>> s
a    0.137477
b   -0.606762
c    0.085030
d   -0.571760
e   -0.475104
dtype: float64
Run Code Online (Sandbox Code Playgroud)

现在,我可以这样做:

>>> import numpy as np
>>> np.diag(s)
array([[ 0.13747693,  0.        ,  0.        ,  0.        ,  0.        ],
       [ 0.        , -0.60676226,  0.        ,  0.        ,  0.        ],
       [ 0.        ,  0.        ,  0.08502993,  0.        ,  0.        ],
       [ 0.        ,  0. …
Run Code Online (Sandbox Code Playgroud)

python matrix-multiplication pandas

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

在Spyder中没有IPython

我不认为我在这个密切相关的问题中遇到了问题.

我正在运行Linux Mint 16(基于Ubuntu 13.10)并拥有Spyder 2.2.5和IPython 0.13.2.

Interpreters菜单下我只看到Open a Python interpreter...而不是打开IPython解释器的选项.

有什么我必须要做的"显示"Spyder IPython"是"在哪里?

这是我的"可选依赖项"的输出:

IPython >=0.13  :  0.13.2 (OK)
matplotlib >=1.0:  1.2.1 (OK)
pep8 >=0.6      :  None (NOK)
pyflakes >=0.5.0:  0.7.3 (OK)
pylint >=0.25   :  None (NOK)
rope >=0.9.2    :  0.9.2 (OK)
sphinx >=0.6.6  :  1.1.3 (OK)
Run Code Online (Sandbox Code Playgroud)

ipython spyder

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

如何忽略Excel公式中的滤除数据

我正在使用索引/匹配来从相关表中获取数据以填充第一个表.在我的相关表中,我已经过滤掉了值,但过滤掉的值仍然填充在我的第一个表中.如果索引/匹配不够智能,只能获取过滤后的值,我该如何解决此问题(首选公式,但VBA可接受)才能获得过滤后的值.

这是我目前的公式:

=INDEX(Table_owssvr__1[MyValues],MATCH([@[ID]],Table_owssvr__1[ID],0))
Run Code Online (Sandbox Code Playgroud)

excel

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

对Python中单行代码的长篇评论

尽管已经阅读了 PEP8对评论主题的评论,但我仍然想知道如何最好地评论Python中的单行代码.

当所讨论的代码行(非常)很短时,给出的示例很好:

x = x + 1                 # Compensate for border
Run Code Online (Sandbox Code Playgroud)

但如果行或评论更长,则事情变得更加困难.例如:

import numpy as np
import matplotlib.pyplot as plt
a = np.random.random([3, 3])
b = np.random.random([3, 3])
coords = zip(a.ravel(), b.ravel()) # match elements of a with elements of b ignoring shape
plt.scatter(*zip(*coords))
Run Code Online (Sandbox Code Playgroud)

注释相当长,代码行也是如此,使得整个事情比可接受的行长度更长.

我通常把评论放在上面,但是不清楚评论是否适用于该plt行:

# match elements of a with elements of b ignoring shape
coords = zip(a.ravel(), b.ravel())
plt.scatter(*zip(*coords))
Run Code Online (Sandbox Code Playgroud)

我倾向于通过在两行之间插入换行来解决这个问题:

# match elements of a with elements of b ignoring shape
coords = …
Run Code Online (Sandbox Code Playgroud)

python comments

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

从 DataFrame 字典创建一个 DataFrame

我有一个 DataFrames 字典,其中的键被认为是有意义的:

In [32]: x = pd.DataFrame(dict(foo=[1,2,3], bar=[4,5,6])).set_index('foo')
In [33]: y = pd.DataFrame(dict(foo=[7,8,9], bar=[10,11,12])).set_index('foo')
In [34]: z = dict(x=x, y=y)
Run Code Online (Sandbox Code Playgroud)

看起来像:

In [43]: x
Out[43]: 
     bar
foo     
1      4
2      5
3      6

In [44]: y
Out[44]: 
     bar
foo     
7     10
8     11
9     12
Run Code Online (Sandbox Code Playgroud)

有没有一种很好的方法来获得以下数据帧:

    foo  bar
x   1    4
    2    5
    3    6
y   7    10
    8    11
    9    12
Run Code Online (Sandbox Code Playgroud)

python pandas

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

DataFrame中列的子集上的逻辑OR

我想得到所有行(至少)df [mylist]中的一列包含True.

我现在正在做:

df = df[ df[mylist[0]] | df[mylist[1]] | df[mylist[2]] ]
Run Code Online (Sandbox Code Playgroud)

where mylist列是与列相关的字符串df.但我想这样做的任何长度mylist.

我能想到的唯一方法是循环 mylist并为其中的每个元素创建一个新的数据帧,然后合并/连接或其他任何内容.但这对我来说并不是很聪明.

有没有更好的办法?

python pandas

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

根据每行中的值获取列标题

我有一个 pandas 数据框,如下所示(只是一个说明):

import datetime
todays_date = datetime.datetime.now().date()   
index = pd.date_range(todays_date-datetime.timedelta(10), periods=2, freq='D')
columnheader=['US', 'Canada', 'UK', 'Japan']
data=np.array([[3,4,2,1],[1,4,3,2]])
df = pd.DataFrame(data, index=index, columns=columnheader)
Run Code Online (Sandbox Code Playgroud)

结果是:

            US  Canada  UK  Japan
2015-07-26   3       4   2      1
2015-07-27   1       4   3      2
Run Code Online (Sandbox Code Playgroud)

我需要找到每行的值为 1 和 2 的列标题。

所以我应该得到

['Japan', 'UK']
['US', 'Japan']
Run Code Online (Sandbox Code Playgroud)

python pandas

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

不同位置的Slice/split string Series

我希望根据某些子字符串的长度在不同的点拆分字符串系列

In [47]: df = pd.DataFrame(['group9class1', 'group10class2', 'group11class20'], columns=['group_class'])
In [48]: split_locations = df.group_class.str.rfind('class')
In [49]: split_locations
Out[49]: 
0    6
1    7
2    7
dtype: int64
In [50]: df
Out[50]: 
      group_class
0    group9class1
1   group10class2
2  group11class20
Run Code Online (Sandbox Code Playgroud)

我的输出应该是这样的:

      group_class    group    class
0    group9class1   group9   class1
1   group10class2  group10   class2
2  group11class20  group11  class20
Run Code Online (Sandbox Code Playgroud)

我半认为这可能有效:

In [56]: df.group_class.str[:split_locations]
Out[56]: 
0   NaN
1   NaN
2   NaN
Run Code Online (Sandbox Code Playgroud)

如何根据 中的变量位置对字符串进行切片split_locations

python pandas

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

从选择中获取innerHTML

div在 HTML 页面中有以下内容:

<div class="foo">Bar</div>
<div class="foo">Baz</div>
Run Code Online (Sandbox Code Playgroud)

我想得到一个包含在两个divs 中的文本的数组:

['Bar', 'Baz']
Run Code Online (Sandbox Code Playgroud)

我可以使用d3.nodes它来做到这一点,但它似乎有点笨拙。有没有更聪明的方法?

d3.selectAll(".foo").nodes().map(function(d) { return d.innerHTML; });
Run Code Online (Sandbox Code Playgroud)

答案当然可以是纯 Javascript!

javascript d3.js

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

错误429:令牌不足(DefaultGroupUSER-100s)定义用户的原因是什么?

tl / dr是否所有100个使用相同客户端ID的设备都具有100个用户,具有自己的限制或一个用户共享限制?

我有一个可读写Google表格的网页。

因为该网页需要知道某个单元是否已更改,所以它每1000毫秒轮询一次服务器:

var pollProcId = window.setInterval(pollForInput, 1000);
Run Code Online (Sandbox Code Playgroud)

一个在哪里pollForInput

gapi.client.sheets.spreadsheets.values.get(request).then(callback);
Run Code Online (Sandbox Code Playgroud)

当我尝试将这个应用程序与100名学生一起使用时,我收到许多429错误代码(超过成功读取的错误代码),以响应google.apps.sheets.v4.SpreadsheetsService.GetValues请求:

错误代码429-a-thon

我的许多用户都没有看到甚至第一个请求回来的消息。

AnalyticsDefaultGroupUSER-100s错误响应页面,据我所知,这些是错误:

表示每位用户每项目配额每100秒请求已用尽。

但是由于我的应用程序每1000毫秒仅请求一次,因此我不希望看到这么多429s,因为我每100秒(每秒1个)的请求数限制为100,因此只有其应用程序在100秒内未完成的用户才应已经收到了429

我知道我应该实现指数退避(我保证,我会做的),但是我担心我误解了这种情况下的“用户”。

每个用户都使用他们自己的设备(因此大概具有不同的IP地址),但是他们都使用我的“客户端ID”。

这种情况是计数每秒发出一个请求的用户数量是多少,还是每秒发出一百个请求的单个用户数量?

google-api google-oauth gapi google-sheets-api

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