当前位置: 首页 > 面试题库 >

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

萧萧迟
2023-03-14
问题内容

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

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调用之后立即重命名该列,但是我想了解更多有关此方法及其语法的信息。


问题答案:

您可以将关键字参数传递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


 类似资料:
  • 问题内容: 我使用以下内容创建了一个数据框: 我想获得含有从每列的数据帧具有在他们的名字。这只是我的问题的一个简单版本,因此我的实际数据框将具有更多列。 问题答案: 替代方法:

  • 问题内容: 我有一个名为的数据框。如何重命名唯一的一列标题?例如到? 问题答案: data.rename(columns={‘gdp’:’log(gdp)’}, inplace=True) 在它接受一个字典作为一个PARAM演出,所以你只是传递一个字典一次入境。

  • 问题内容: 我有一个包含屏幕名称,tweet,收藏夹等的Pandas DataFrame。我想找到“ favcount”(我已经做过)的最大值,并返回该“ tweet”的屏幕名称 我似乎找不到任何东西,任何人都可以帮助我朝正确的方向发展吗? 问题答案: 使用 来获取最大价值的指标。那你可以用 编辑: 现已弃用,切换为

  • 我有这个“file.csv”文件要和熊猫一起读: 使用 输出为: 我知道,列是一个完整的字符串,因为: 我需要将其作为字符串列表来阅读,如。我尝试了这个问题中提供的解决方案,但没有成功,因为我的和字符实际上会把事情搞砸。 预期输出应为:

  • 问题内容: 我想使用在数据帧中为另一列切片的字符串在Pandas中创建新列。 例如。 由一个简单的切片组成的新列在哪里 我尝试了许多尝试都无济于事-我觉得我缺少一些简单的东西。 最有效的方法是什么? 问题答案: 您可以调用该方法并应用切片,这将比其他方法更快,因为它是矢量化的(感谢@unutbu): 您也可以在df上调用lambda函数,但这在较大的数据帧上会比较慢: