小编Nil*_*ils的帖子

使用上面的行中的值填充数据框

假设我有这样的数据框:

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,但我正在寻找一种更有效的方法.

r dataframe

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

防止单列自动转换为矢量

我有一个这样的数据框:
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自动转换为单列选择的向量?

r dataframe

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

python的scipy.stats.ranksums与R的wilcox.test

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值?

python r scipy

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

matplotlib - 单独子图中的图例

我正在绘制一组饼图,每个饼图对相同的两种类型的数据使用相同的两种颜色.

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)

显然,为这些图表中的每一个绘制图例是没有意义的,因为它们都是相同的.那么有什么方法可以将一个图例最终绘制成一个单独的子图形?

python matplotlib legend

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

为PHP REST API实现简单身份验证

我正在努力为旧版PHP站点添加REST API.这是为内部应用程序提供端点,所以我可以自由地设计内容以及支持哪些内容.

我现在需要添加到此API的是一种登录方式,然后以特定用户身份执行操作.该网站已在几年前建成,并不一定是当时的最佳实践,所以我很遗憾对我的工作方式有点限制.所有这些都需要使用MySQL 5.6在PHP 5.4中运行.

我一直在阅读常见的设计,OAuth1/2看起来像是最常见的标准.然而,对于我的目的来说,这似乎是一种巨大的矫枉过正,因为它具有我不需要的各种功能,并且实现起来似乎非常复杂.

相反,我正计划做这样的事情:

  • 客户端调用get_sessionAPI端点,该端点生成随机会话ID,将其保存到数据库中的表并将其返回给客户端.
  • 客户端保存此会话ID.
  • 然后客户端通过向login端点发送请求进行身份验证,发送用户名,密码和会话ID(显然通过HTTPS).
  • 服务器将数据与用户表进行比较,如果登录正确,则更新会话表以将会话ID与相应的用户ID相关联.这需要以某种方式限制速率以防止暴力强制.
  • 现在,客户端可以调用任何其他端点,仅提供其会话ID以进行授权.
  • 在每个请求中,服务器查找会话ID,查看与之关联的用户并执行正确的操作.
  • 客户端可以记住会话ID以供将来使用,直到它被手动删除或在一段时间后过期.
  • 要注销,客户端会向logout端点发送请求,服务器会删除与用户帐户的关联.

这是一个合理的设计吗?它显然不是很复杂,但我正在寻找一些我可以实现的东西,没有太大的麻烦或需要第三方库.

php authentication api rest session

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

LSF - 获取提交作业的ID

假设我使用类似的东西提交工作bsub pwd.现在我想获得该作业的作业ID,以便为下一个作业构建依赖项.有什么方法可以让bsub返回作业ID吗?

lsf

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

使用numpy / h5py进行内存有效的Benjamini-Hochberg FDR校正

我正在尝试使用Benjamini&Hochberg的方法来计算一组经过FDR校正的p值。但是,我尝试对其运行的向量包含超过100亿个值。

在给定数据量的情况下,statsmodel的 multicomp模块中的常规方法很快就会耗尽内存。查看该函数的源代码,似乎它创建了多个向量,它们的内存长度为100亿,即使在具有100GB RAM的计算机上,这显然也不起作用。

有没有办法做到这一点,理想情况下不必将整个向量保存在内存中?我特别想知道是否有可能以允许其使用h5py数据结构在磁盘上运行的方式重新实现BH。

或其他建议?

python statistics numpy hdf5 h5py

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

将 pandas 多重索引转换为列名的简单平面索引

我有一个像这样的熊猫数据框:

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)

python pandas

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

MySQL - 主键的字符串比较速度

我有一个 MySQL 表,我希望我的主键是一个字符串。这个字符串可能会更长一些(数百个字符)。

一个非常常见的查询是INSERT ... ON DUPLICATE KEY UPDATE,这意味着 MySQL 必须经常检查主键是否已经存在于表中。如果这是使用天真的 strcmp 完成的,我想这可能需要很长时间,字符串越长。因此,手动散列字符串(或较短的字符串或某些其他数据类型)并将其用作我的主键会更好还是我可以直接使用长字符串?MySQL 是否在内部散列主键字符串?

mysql

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

python/Flask:具有动态第一个组件的路由

我正在写一个 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现在打开你应该得到一个“你好”而不是文件。

python routes flask

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

标签 统计

python ×5

r ×3

dataframe ×2

api ×1

authentication ×1

flask ×1

h5py ×1

hdf5 ×1

legend ×1

lsf ×1

matplotlib ×1

mysql ×1

numpy ×1

pandas ×1

php ×1

rest ×1

routes ×1

scipy ×1

session ×1

statistics ×1