我环顾四周,但找不到解决方案。在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抑制异常 - pythonfrom 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…