小编ste*_*kwr的帖子

理解熊猫合并中的“left_index”和“right_index”参数

我真的很难理解 pandas.merge 中的“left_index”和“right_index”参数。我阅读了文档,四处搜索,尝试了各种设置并试图理解,但我仍然感到困惑。考虑这个例子:

left = pd.DataFrame({'key1': ['K0', 'K0', 'K1', 'K2'], 
                 'key2': ['K0', 'K1', 'K0', 'K1'],
                 'A': ['A0', 'A1', 'A2', 'A3'],
                 'B': ['B0', 'B1', 'B2', 'B3']})

right = pd.DataFrame({'key1': ['K0', 'K1', 'K1', 'K2'],
                      'key2': ['K0', 'K0', 'K0', 'K0'],
                      'C': ['C0', 'C1', 'C2', 'C3'],
                      'D': ['D0', 'D1', 'D2', 'D3'],
                      'E': [1,2,3,4]})
Run Code Online (Sandbox Code Playgroud)

现在,当我运行以下命令时:

pd.merge(left, right, left_on=['key2', 'key1'], right_on=['key1', 'key2'], how='outer', indicator=True, left_index=True)
Run Code Online (Sandbox Code Playgroud)

我得到:

  key1_x key2_x    A    B key1_y key2_y    C    D    E      _merge
0     K0     K0   A0   B0     K0     K0   C0   D0  1.0 …
Run Code Online (Sandbox Code Playgroud)

python merge join pandas

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

当使用 +atomics 标志 web assembly 编译 rust wasm 时,只有最大内存的 1/4 可用

因此,我使用带有 +atomic 标志的 wasm/rust 时内存不足,想检查实际可用的内存量。这是我的粗略的最小工作示例,它在向量发生恐慌之前记录其内存:

索引.js

import init from './pkg/test1.js';
import * as wasm_test1 from './pkg/test1.js';
async function run() {
  await init();
  let newDiv = document.createElement("div");
  let btn = document.createElement("button");
  btn.innerHTML = "Max out the memory now and panic!";
  document.body.appendChild(btn);

  btn.onclick = function () {
    wasm_test1.fill_memory();
  };
}
run();
Run Code Online (Sandbox Code Playgroud)

库文件

use wasm_bindgen::prelude::*;

#[wasm_bindgen]
extern "C" {
    #[wasm_bindgen(js_namespace = console)]
    fn log(s: &str);
}

#[wasm_bindgen]
pub fn fill_memory() {
    let mut v  = Vec::new();
    for i in 1..1000000000 {
        v.push(0);
        if …
Run Code Online (Sandbox Code Playgroud)

rust webassembly rayon wasm-bindgen

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

在不可变迭代器上运行 next 时不能作为可变借用(没有其他借用)

当尝试运行以下代码时:

fn main() {
    let s1 = String::from("hello world");
    println!("The first word in the string is: {}", return_first_word(&s1));
}

fn return_first_word(s: &String) -> String {
    let t = s.split(" ");
    String::from(t.next().unwrap())
}
Run Code Online (Sandbox Code Playgroud)

我收到错误cannot borrow as mutable消息String::from(t.next().unwrap())。当然,当我let t = ...用以下内容替换该行时let mut t = ...代码替换该行时效果很好。

我的问题是,有人可以解释为什么吗?这里借了什么,借了什么?我检查了新创建的不可变变量的类型t,它是一个迭代器。为什么迭代迭代器会出现问题?

rust

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

标签 统计

rust ×2

join ×1

merge ×1

pandas ×1

python ×1

rayon ×1

wasm-bindgen ×1

webassembly ×1