小编Art*_* B.的帖子

修改pandas数据帧中的行子集

假设我有一个带有两列A和B的pandas DataFrame.我想修改这个DataFrame(或者创建一个副本),这样只要A为0,B总是NaN.我将如何实现?

我尝试了以下内容

df['A'==0]['B'] = np.nan
Run Code Online (Sandbox Code Playgroud)

df['A'==0]['B'].values.fill(np.nan)
Run Code Online (Sandbox Code Playgroud)

没有成功.

python pandas

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

pytz奇怪的时区问题

>>> import pytz
>>> pytz.timezone('Asia/Hong_Kong')
<DstTzInfo 'Asia/Hong_Kong' LMT+7:37:00 STD>
Run Code Online (Sandbox Code Playgroud)

7小时37分钟的偏移量?这有点奇怪,有没有人遇到同样的问题?

事实上,我之间的行为有所不同

import pytz
from datetime import datetime
hk = pytz.timezone('Asia/Hong_Kong')

dt1 = datetime(2012,1,1,tzinfo=hk)
dt2 = hk.localize(datetime(2012,1,1))
if dt1 > dt2:
   print "Why?"
Run Code Online (Sandbox Code Playgroud)

python pytz

41
推荐指数
3
解决办法
5579
查看次数

只要启发式是可以接受的,A*是否与负权重一起使用?

这似乎是正确的,但我在网上找不到任何人说这是,所以我想确定.如果您同意,请告诉我,如果是,为什么.理想情况下是指向纸张的链接,或者,如果您不同意,则为反例.

我们G是一个有向图有一些负面的边缘.我们想要运行A*G.

首先,如果G从源头到达并且达到目标的负周期,则没有可接受的启发式,因为不可能低估达到目标的成本,因为它是-?.

但是,如果没有这样的循环,可能会有一些可接受的启发式.特别是,所有负边缘的总和将始终低估达到目标的成本.

我的印象是,在这种情况下,A*可以正常工作.

PS我可以在图上运行Bellman-Ford,检测负循环,如果没有,重新加权以消除负边缘.但是,如果我知道没有负循环,我可以跳过它并运行A*.


这是非常错误的.顶点的成本是启发式和到目前为止构建的路径的总和......而启发式低估了达到目标的成本,启发式和到目前为止所采用的路径的总和可能不是.千里马culpa.

似乎用一个低估了达到目标的成本的函数对开放集进行排序,而通过一个给定的顶点可能会工作......如果一个人使用<sum of negative edges in the graph>这样的函数,它看起来像退化为图遍历.

algorithm graph-theory

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

使用pandas在HDF中存储包含字符串的数据帧时的谜团

这是万圣节大熊猫和HDF的幽灵:

df = pandas.DataFrame([['a','b'] for i in range(1,1000)])
store = pandas.HDFStore('test.h5')
store['x'] = df
store.close()
Run Code Online (Sandbox Code Playgroud)

然后

ls -l test.h5
-rw-r--r-- 1 arthur arthur 1072080 Oct 26 10:50 test.h5
Run Code Online (Sandbox Code Playgroud)

1.1M?有点陡峭但为什么不呢.这里的事情变得非常怪异

store = pandas.HDFStore('test.h5') #open it again
store['x'] = df #do the same thing as before!
store.close()
Run Code Online (Sandbox Code Playgroud)

然后

ls -l test.h5
-rw-r--r-- 1 arthur arthur 2122768 Oct 26 10:52 test.h5
Run Code Online (Sandbox Code Playgroud)

您现在已进入Twilight区域.毋庸置疑,操作后商店无法区分,但每次迭代都会使文件更加肥胖.

似乎只有在涉及到字符串时才会发生.在我提交错误报告之前,我想知道我在这里遗漏了什么......

python hdf5 pandas

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

在使用pandas TimeSeries的特定时间戳之后选择第一个索引

这是一个由两部分组成的问题,有一个直接的问题和一个更普遍的问题.

我有一只熊猫TimeSeries,ts.要知道一定时间后的第一个值.我可以做这个,

ts.ix[ts[datetime(2012,1,1,15,0,0):].first_valid_index()]
Run Code Online (Sandbox Code Playgroud)

a)有更好,更少笨重的方法吗?

b)来自C,在处理这些有些不透明,可能是可变的但通常不是,可能是懒惰但不总是类型时,我有一定的恐惧症.所以要清楚,当我这样做

ts[datetime(2012,1,1,15,0,0):].first_valid_index()
Run Code Online (Sandbox Code Playgroud)

ts [datetime(2012,1,1,15,0,0):]是一个pandas.TimeSeries对象吗?我可能会改变它.

这是否意味着每当我拿一片时,都会在内存中分配一份ts副本?这是否意味着这个无害的代码行实际上只是为了获得索引值而触发一个千兆字节的TimeSeries副本?

或者他们可能神奇地共享内存,如果其中一个对象发生变异,则会完成一个懒惰的副本?但是,您如何知道哪些特定操作会触发副本?也许不切片,但如何重命名列?它似乎在文档中没有这么说.那会麻烦你吗?它应该打扰我还是我应该学会不用担心并发现探查器的问题?

python lazy-evaluation pandas

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

scipy.optimize.minimize,一次性计算约束及其雅可比

我对最小化问题的约束与其雅可比行列式之间有相当多的共享计算,以至于我几乎免费获得了雅可比行列式。有什么办法可以共享计算吗?

python optimization scipy

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

用随机数字填充浏览器窗口

我想用随机数字填充网页中的可见窗口.我目前正在尝试这样做的方式首先涉及一长串随机数字,然后在div上使用以下属性:

 #mydiv{
      font-family: "Inconsolata", monospace;
      word-break: break-all;
      font-size: 3em;
      color: #202020;
      height: 100%;
      width: 100%;
      overflow-y:hidden;
      }
Run Code Online (Sandbox Code Playgroud)

https://jsfiddle.net/4ztpbnm0/1/

它在Chrome上运行(ish),但在调整浏览器窗口大小后需要非常明显的时间来重排.有没有办法使这个无缝?

javascript css

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

将稀疏矩阵限制为scipy中的子空间

说我有一个方形的NxN crs矩阵辣.我想通过保持M个索引(由N个布尔数组给出,其中M为真)将该矩阵限制为子空间.这应该给我一个MxM稀疏矩阵.

因此,显然,一种方法是将系数提取为数据数组和两个坐标数组,并使用排序重新编号坐标.这很痛苦,有点难看.

是不是有功能,或者是图书馆调用呢?

python scipy sparse-matrix

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

合并头文件和cpp文件

我正在开发一个C++项目,我已经将每个类实现为一个单独的.h文件和.cpp文件.我发现这不值得麻烦. - 我在两个文件之间来回编辑 - 它引起了很多不为人知的头痛(必须添加预先声明,显式导出模板化类) - 我没有看到直接的好处,我的代码库必然会保持相对较小(比如说<10,000行代码)和编译时间并不重要.

我的问题是双重的

a)在保持实施和原型分离方面是否有可能遗漏的好处?

b)如果没有,是否有任何免费工具或ide能够将cpp文件合并回头文件?

c++ header-files

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