同时选择和重命名列 - python

我环顾四周,但找不到解决方案。在R's dplyr中,我们可以在一行代码中选择并重命名列。

select(Com=Commander,Sco=Score)

我正在熊猫中尝试做同样的事情,但是还没有找到可行的解决方案!

假设我们有这个样本数据

# Create an example dataframe
data = {'Commander': ['Jason', 'Molly', 'Tina', 'Jake', 'Amy'], 
        'Date': ['2012, 02, 08', '2012, 02, 08', '2012, 02, 08', '2012, 02, 08', '2012, 02, 08'], 
        'Score': [4, 24, 31, 2, 3]}
df = pd.DataFrame(data, index = ['Cochice', 'Pima', 'Santa Cruz', 'Maricopa', 'Yuma'])
df


           Commander          Date  Score
Cochice        Jason  2012, 02, 08      4
Pima           Molly  2012, 02, 08     24
Santa Cruz      Tina  2012, 02, 08     31
Maricopa        Jake  2012, 02, 08      2
Yuma             Amy  2012, 02, 08      3

并想要选择并重命名Commander和Score列,就像这样

df[['Com'=='Commander','Sco'=='Score']]

ValueError:项目的错误长度2而不是5。

我怎样才能做到这一点 ?

提前谢谢!

参考方案

有点晚了,也许您已经发现了这个问题,但是我遇到了同样的问题,这里的答案为我提供了使用解决方案的大部分方法。

“如何添加选择范围”的最简单答案是将所选列的列表传递给重命名操作的结果数据框:

df.rename(columns = {"Com" : "Commander", "Sco":"Score"})[['Com', 'Sco']]

              Com  Sco
Cochice     Jason    4
Pima        Molly   24
Santa Cruz   Tina   31
Maricopa     Jake    2
Yuma          Amy    3

但是重写列名有点繁琐,对吧?因此,您可以使用字典来初始化重命名:

selector_d = {'Commander': 'Com', 'Score': 'Sco'}

并将其传递给重命名并选择操作:

df.rename(columns=selector_d)[[*selector_d.values()]]
              Com  Sco
Cochice     Jason    4
Pima        Molly   24
Santa Cruz   Tina   31
Maricopa     Jake    2
Yuma          Amy    3

我的情况接近这一点-我有不想重命名的列,但我确实想选择它们。这可以通过在重命名/选择字典中包括各列来完成,但要使用相同的名称。

这是整个过程,并添加了另一列:

data = {
    'Commander': ['Jason', 'Molly', 'Tina', 'Jake', 'Amy'],
    'Date': ['2012, 02, 08', '2012, 02, 08', '2012, 02, 08',
             '2012, 02, 08', '2012, 02, 08'],
    'Score': [4, 24, 31, 2, 3],
    'Team': ['Green', 'Yellow', 'Green', 'Yellow', 'Yellow'],
}
df = pd.DataFrame(data, index=['Cochice', 'Pima', 'Santa Cruz', 'Maricopa', 'Yuma'])
df

           Commander          Date  Score    Team
Cochice        Jason  2012, 02, 08      4   Green
Pima           Molly  2012, 02, 08     24  Yellow
Santa Cruz      Tina  2012, 02, 08     31   Green
Maricopa        Jake  2012, 02, 08      2  Yellow
Yuma             Amy  2012, 02, 08      3  Yellow

selector_d = {'Team': 'Team', 'Commander': 'Com', 'Score': 'Sco'}

df.rename(columns=selector_d)[[*selector_d.values()]]

              Team    Com  Sco
Cochice      Green  Jason    4
Pima        Yellow  Molly   24
Santa Cruz   Green   Tina   31
Maricopa    Yellow   Jake    2
Yuma        Yellow    Amy    3

如您所见,这还允许对最终数据框中的列进行重新排序。

在返回'Response'(Python)中传递多个参数 - python

我在Angular工作,正在使用Http请求和响应。是否可以在“响应”中发送多个参数。角度文件:this.http.get("api/agent/applicationaware").subscribe((data:any)... python文件:def get(request): ... return Response(seriali…

Python exchangelib在子文件夹中读取邮件 - python

我想从Outlook邮箱的子文件夹中读取邮件。Inbox ├──myfolder 我可以使用account.inbox.all()阅读收件箱,但我想阅读myfolder中的邮件我尝试了此页面folder部分中的内容,但无法正确完成https://pypi.python.org/pypi/exchangelib/ 参考方案 您需要首先掌握Folder的myfo…

R'relaimpo'软件包的Python端口 - python

我需要计算Lindeman-Merenda-Gold(LMG)分数,以进行回归分析。我发现R语言的relaimpo包下有该文件。不幸的是,我对R没有任何经验。我检查了互联网,但找不到。这个程序包有python端口吗?如果不存在,是否可以通过python使用该包? python参考方案 最近,我遇到了pingouin库。

Python ThreadPoolExecutor抑制异常 - python

from concurrent.futures import ThreadPoolExecutor, wait, ALL_COMPLETED def div_zero(x): print('In div_zero') return x / 0 with ThreadPoolExecutor(max_workers=4) as execut…

如何用'-'解析字符串到节点js本地脚本? - python

我正在使用本地节点js脚本来处理字符串。我陷入了将'-'字符串解析为本地节点js脚本的问题。render.js:#! /usr/bin/env -S node -r esm let argv = require('yargs') .usage('$0 [string]') .argv; console.log(argv…