大熊猫以新的列名指定为字符串

发布于 2021-01-29 18:12:32

我最近发现了熊猫的“分配”方法,我发现它非常优雅。我的问题是新列的名称被指定为关键字,因此它不能包含空格或破折号。

df = DataFrame({'A': range(1, 11), 'B': np.random.randn(10)})
df.assign(ln_A = lambda x: np.log(x.A))
        A         B      ln_A
0   1  0.426905  0.000000
1   2 -0.780949  0.693147
2   3 -0.418711  1.098612
3   4 -0.269708  1.386294
4   5 -0.274002  1.609438
5   6 -0.500792  1.791759
6   7  1.649697  1.945910
7   8 -1.495604  2.079442
8   9  0.549296  2.197225
9  10 -0.758542  2.302585

但是如果我想将新列命名为“ ln(A)”怎么办?例如

df.assign(ln(A) = lambda x: np.log(x.A))
df.assign("ln(A)" = lambda x: np.log(x.A))


File "<ipython-input-7-de0da86dce68>", line 1
df.assign(ln(A) = lambda x: np.log(x.A))
SyntaxError: keyword can't be an expression

我知道我可以在.assign调用之后立即重命名该列,但是我想了解更多有关此方法及其语法的信息。

关注者
0
被浏览
52
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    您可以将关键字参数传递assign为字典,如下所示:

    kwargs = {"ln(A)" : lambda x: np.log(x.A)}
    df.assign(**kwargs)
    
        A         B     ln(A)
    0   1  0.500033  0.000000
    1   2 -0.392229  0.693147
    2   3  0.385512  1.098612
    3   4 -0.029816  1.386294
    4   5 -2.386748  1.609438
    5   6 -1.828487  1.791759
    6   7  0.096117  1.945910
    7   8 -2.867469  2.079442
    8   9 -0.731787  2.197225
    9  10 -0.686110  2.302585
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看