假设我有这样的数据框:
ID, ID_2, FIRST, VALUE
-----------------------
'a', 'aa', TRUE, 2
'a', 'ab', FALSE, NA
'a', 'ac', FALSE, NA
'b', 'aa', TRUE, 5
'b', 'ab', FALSE, NA
Run Code Online (Sandbox Code Playgroud)
因此,每个ID仅为FIRST = TRUE设置VALUE.ID_2可能在ID之间重复,但不是必须的.
如何将每个ID的第一行中的数字放入该ID的所有行中,以使VALUE列变为2,2,2,5,5?
我知道我可以简单地用for循环遍历所有ID,但我正在寻找一种更有效的方法.
我有一个这样的数据框:
df = data.frame(a=1:3, b=2:4, c=3:5)
我正在使用类似于以下内容的方式从该数据框中选择列:
df[, c(T, F, T)]
只要至少有两列要返回,这样就可以正常工作; 但是,如果我这样做,例如:
df[, c(T, F, F)]
...我突然只得到一个向量而不是data.frame.
通常这很好(甚至是期望的),但是因为我需要在稍后的某个时候将结果作为data.frame,这完全会弄乱我的脚本.
有没有办法可以阻止R自动转换为单列选择的向量?
python的scipy.stats.ranksums和R的wilcox.test都应该计算Wilcoxon秩和检验的双边p值.但是当我在同一数据上运行两个函数时,我得到的p值相差几个数量级:
R:
> x=c(57.07168,46.95301,31.86423,38.27486,77.89309,76.78879,33.29809,58.61569,18.26473,62.92256,50.46951,19.14473,22.58552,24.14309)
> y=c(8.319966,2.569211,1.306941,8.450002,1.624244,1.887139,1.376355,2.521150,5.940253,1.458392,3.257468,1.574528,2.338976)
> print(wilcox.test(x, y))
Wilcoxon rank sum test
data: x and y
W = 182, p-value = 9.971e-08
alternative hypothesis: true location shift is not equal to 0
Run Code Online (Sandbox Code Playgroud)
蟒蛇:
>>> x=[57.07168,46.95301,31.86423,38.27486,77.89309,76.78879,33.29809,58.61569,18.26473,62.92256,50.46951,19.14473,22.58552,24.14309]
>>> y=[8.319966,2.569211,1.306941,8.450002,1.624244,1.887139,1.376355,2.521150,5.940253,1.458392,3.257468,1.574528,2.338976]
>>> scipy.stats.ranksums(x, y)
(4.415880433163923, 1.0059968254463979e-05)
Run Code Online (Sandbox Code Playgroud)
所以R给我1e-7而Python给我1e-5.
这种差异来自哪里,哪一个是"正确的"p值?
我正在绘制一组饼图,每个饼图对相同的两种类型的数据使用相同的两种颜色.
plt.figure(num=None, figsize=(6, 8))
for i in range(len(data_1)):
plt.subplot(sp_rows, sp_cols, i+1)
fracs = [data_1[i], data_2[i]]
plt.pie(fracs, autopct='%1.1f%%')
pp.savefig()
Run Code Online (Sandbox Code Playgroud)
显然,为这些图表中的每一个绘制图例是没有意义的,因为它们都是相同的.那么有什么方法可以将一个图例最终绘制成一个单独的子图形?
我正在努力为旧版PHP站点添加REST API.这是为内部应用程序提供端点,所以我可以自由地设计内容以及支持哪些内容.
我现在需要添加到此API的是一种登录方式,然后以特定用户身份执行操作.该网站已在几年前建成,并不一定是当时的最佳实践,所以我很遗憾对我的工作方式有点限制.所有这些都需要使用MySQL 5.6在PHP 5.4中运行.
我一直在阅读常见的设计,OAuth1/2看起来像是最常见的标准.然而,对于我的目的来说,这似乎是一种巨大的矫枉过正,因为它具有我不需要的各种功能,并且实现起来似乎非常复杂.
相反,我正计划做这样的事情:
get_sessionAPI端点,该端点生成随机会话ID,将其保存到数据库中的表并将其返回给客户端.login端点发送请求进行身份验证,发送用户名,密码和会话ID(显然通过HTTPS).logout端点发送请求,服务器会删除与用户帐户的关联.这是一个合理的设计吗?它显然不是很复杂,但我正在寻找一些我可以实现的东西,没有太大的麻烦或需要第三方库.
假设我使用类似的东西提交工作bsub pwd.现在我想获得该作业的作业ID,以便为下一个作业构建依赖项.有什么方法可以让bsub返回作业ID吗?
我正在尝试使用Benjamini&Hochberg的方法来计算一组经过FDR校正的p值。但是,我尝试对其运行的向量包含超过100亿个值。
在给定数据量的情况下,statsmodel的 multicomp模块中的常规方法很快就会耗尽内存。查看该函数的源代码,似乎它创建了多个向量,它们的内存长度为100亿,即使在具有100GB RAM的计算机上,这显然也不起作用。
有没有办法做到这一点,理想情况下不必将整个向量保存在内存中?我特别想知道是否有可能以允许其使用h5py数据结构在磁盘上运行的方式重新实现BH。
或其他建议?
我有一个像这样的熊猫数据框:
columns = pd.MultiIndex.from_tuples([
('A', 'cat', 'long'), ('A', 'cat', 'long2'),
('A', 'dog', 'short'), ('B', 'dog', 'short')
],
names=['exp', 'animal', 'hair_length']
)
df = pd.DataFrame(np.random.randn(4, 4), columns=columns, index=['W', 'X', 'Y', 'Z'])
Run Code Online (Sandbox Code Playgroud)
结果是这样的结构:
exp A B
animal cat dog dog
hair_length long long2 short short
W 1.088097 -0.104486 2.574262 -0.614482
X -0.088731 0.620010 0.101627 -0.518250
Y -0.687172 0.108860 -1.932803 1.104636
Z 2.453511 0.947065 -2.144457 1.036991
Run Code Online (Sandbox Code Playgroud)
我现在需要将列结构“展平”为简单的列名列表,例如 A_cat_long、A_dog_short 等。
以下命令似乎有效:
df.columns = [ '_'.join(x) for x in df.columns ]
A_cat_long A_cat_long2 A_dog_short B_dog_short …Run Code Online (Sandbox Code Playgroud) 我有一个 MySQL 表,我希望我的主键是一个字符串。这个字符串可能会更长一些(数百个字符)。
一个非常常见的查询是INSERT ... ON DUPLICATE KEY UPDATE,这意味着 MySQL 必须经常检查主键是否已经存在于表中。如果这是使用天真的 strcmp 完成的,我想这可能需要很长时间,字符串越长。因此,手动散列字符串(或较短的字符串或某些其他数据类型)并将其用作我的主键会更好还是我可以直接使用长字符串?MySQL 是否在内部散列主键字符串?
我正在写一个 Flask 网站,我希望有这样的路线:
@app.route('/')
@app.route('/<page_id>')
@app.route('/<page_id>/<subpage_id>')
def page(page_id=None, subpage_id=None):
...
Run Code Online (Sandbox Code Playgroud)
虽然这在理论上应该可行,但看起来这实际上破坏了位于根 static/ 目录中的静态资源。我假设这样做的原因是我的动态路由实际上匹配 'static/style.css',因此覆盖了静态文件的正常处理程序。
有没有办法解决?如果我检测到 page_id=='static',是否有我可以将请求转发到的“静态”处理程序?
编辑:这是一个工作示例
@app.route('/<page_id>/<subpage_id>/<subsubpage_id>')
def xxx(page_id=None, subpage_id=None, subsubpage_id=None):
return 'hello'
Run Code Online (Sandbox Code Playgroud)
如果你http://127.0.0.1:5000/static/css/style.css现在打开你应该得到一个“你好”而不是文件。