小编Cut*_*ufo的帖子

PyCharm 调试器单步跳过一行?

我使用 PyCharm 作为 Python IDE 和调试工具。刚刚升级到2020.1.2。

有时,在调试器中单步执行时,它会跳过通常应该执行的函数中的一行。我尝试了很多修复它的方法,比如重新编辑函数、格式化代码等,但没有任何运气。唯一有希望的方法是将另一个函数定义为代理,仅调用这个有问题的函数,但这实际上是我不会做的,因为这会使代码变得如此笨拙。如果我将此函数复制到另一个新的 .py 文件中并单步调试它,这可能是很正常的。我不知道出了什么问题,除了 PyCharm 可能有错误。

有人和我一样吗?有什么解决办法吗?谢谢!

debugging pycharm

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

DataFrame 对列的划分

我有一个 DataFrame,想要获得如下所示的列对的划分:

df = pd.DataFrame({
    'a1': np.random.randint(1, 1000, 1000),
    'a2': np.random.randint(1, 1000, 1000),
    'b1': np.random.randint(1, 1000, 1000),
    'b2': np.random.randint(1, 1000, 1000),
    'c1': np.random.randint(1, 1000, 1000),
    'c2': np.random.randint(1, 1000, 1000),
})
df['a'] = df['a2'] / df['a1']
df['b'] = df['b2'] / df['b1']
df['c'] = df['c2'] / df['c1']
Run Code Online (Sandbox Code Playgroud)

我想将最后三行合并为一行,如下所示:

df[['a', 'b', 'c']] = df[['a2', 'b2', 'c2']] / df[['a1', 'b1', 'c1']]
Run Code Online (Sandbox Code Playgroud)

但我只得到一个错误ValueError: Columns must be same length as key。如果我只是简单地print(df[['a2', 'b2', 'c2']] / df[['a1', 'b1', 'c1']]),我只会得到一个NaN形状为 (1000, 6) 的 …

python dataframe pandas

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

python conda:创建了一个环境,但它没有使用conda的python

我已经使用anaconda有一段时间了,它的Python可执行文件位于/Users/ufo/opt/anaconda3/bin/python。我尝试使用 conda 创建一个环境,新环境将使用将此 Python 复制到环境的 bin 中。

不过,在当前的 Anaconda 版本中,新环境将不会使用 anaconda 的 Python,而是使用 Mac OS 预装的原始 Python,即 python 2.*。

这是检查 anaconda python 版本、创建/激活新环境并再次检查的片段。从片段中我注意到 $PATH 以及 Python 版本的变化。

如何在新环境中仍然使用anaconda的Python?

(base) ufo@ufodeMacBook-Pro:~$ echo $PATH
/Users/ufo/opt/anaconda3/bin:/Users/ufo/opt/anaconda3/condabin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
(base) ufo@ufodeMacBook-Pro:~$ which python
/Users/ufo/opt/anaconda3/bin/python
(base) ufo@ufodeMacBook-Pro:~$ python -V
Python 3.7.5
(base) ufo@ufodeMacBook-Pro:~$ conda info -e
# conda environments:
#
base                  *  /Users/ufo/opt/anaconda3

(base) ufo@ufodeMacBook-Pro:~$ conda create -n msg
Collecting package metadata (current_repodata.json): done
Solving environment: done

## Package Plan ##

  environment location: /Users/ufo/opt/anaconda3/envs/msg



Proceed ([y]/n)? 

Preparing …
Run Code Online (Sandbox Code Playgroud)

python environment anaconda conda

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

如何使用 serde 将 JSON 数组反序列化为结构体?

我正在尝试将以下 JSON 片段反序列化为Vecof struct Shape

use serde::{Deserialize, Serialize};
use serde_json::{Result, Value};

#[derive(Debug, Serialize, Deserialize)]
struct Shape {  // this struct is not working, for display purpose only
    shape_type: String,
    d0: f64,
    d1: f64,
    d2: f64, //optional, like the case of "dot"
    d3: f64, //optional, like the case of "circle"
}

let json = r#"
  {[
    ["line", 1.0, 1.0, 2.0, 2.0],
    ["circle", 3.0, 3.0, 1.0],
    ["dot", 4.0, 4.0]
  ]}"#;

let data: Vec<Shape> = match serde_json::from_str(json)?;
Run Code Online (Sandbox Code Playgroud)

显然,每种类型都Shape需要 …

json struct rust deserialization serde

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

pandas dataframe 将列与常量进行比较

我有一个类似的代码:

df = pd.DataFrame([{'a': 1, 'b': 2}])
df['c'] = min(5, df['a'] + df['b'])
Run Code Online (Sandbox Code Playgroud)

我的目标是添加列“c”作为常数以及列“a”和“b”之和的最小值。但是Python在第二行给出了错误消息,例如:

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

这个消息是什么意思?我怎样才能实现我的目标?

python dataframe pandas

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