我正在使用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) 我不认为我在这个密切相关的问题中遇到了问题.
我正在运行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) 我正在使用索引/匹配来从相关表中获取数据以填充第一个表.在我的相关表中,我已经过滤掉了值,但过滤掉的值仍然填充在我的第一个表中.如果索引/匹配不够智能,只能获取过滤后的值,我该如何解决此问题(首选公式,但VBA可接受)才能获得过滤后的值.
这是我目前的公式:
=INDEX(Table_owssvr__1[MyValues],MATCH([@[ID]],Table_owssvr__1[ID],0))
Run Code Online (Sandbox Code Playgroud) 尽管已经阅读了 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) 我有一个 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) 我想得到所有行(至少)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并为其中的每个元素创建一个新的数据帧,然后合并/连接或其他任何内容.但这对我来说并不是很聪明.
有没有更好的办法?
我有一个 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) 我希望根据某些子字符串的长度在不同的点拆分字符串系列:
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?
我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!
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请求:
我的许多用户都没有看到甚至第一个请求回来的消息。
AnalyticsDefaultGroupUSER-100s据错误响应页面,据我所知,这些是错误:
表示每位用户每项目配额每100秒的请求已用尽。
但是由于我的应用程序每1000毫秒仅请求一次,因此我不希望看到这么多429s,因为我每100秒(每秒1个)的请求数限制为100,因此只有其应用程序在100秒内未完成的用户才应已经收到了429。
我知道我应该实现指数退避(我保证,我会做的),但是我担心我误解了这种情况下的“用户”。
每个用户都使用他们自己的设备(因此大概具有不同的IP地址),但是他们都使用我的“客户端ID”。
这种情况是计数每秒发出一个请求的用户数量是多少,还是每秒发出一百个请求的单个用户数量?
python ×6
pandas ×5
comments ×1
d3.js ×1
excel ×1
gapi ×1
google-api ×1
google-oauth ×1
ipython ×1
javascript ×1
spyder ×1