首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >熊猫群函数不和>8列

熊猫群函数不和>8列
EN

Stack Overflow用户
提问于 2017-06-08 16:48:35
回答 1查看 1.4K关注 0票数 0

我有一个熊猫数据栏,它包含13个文本列和16个数字列(总共29列,大约13k行)。我想将数据按前13列进行汇总,并返回16列的结果之和。我尝试了以下几点:

代码语言:javascript
复制
df.groupby(1,2,3,4,5,6,7,8,9,10,11,12,13)[14,15,26,17,18,19,20,21,22,23,24,25,26,27,28,29].sum()

但这将返回一个错误"groupby()从1到8个位置参数,但给出了14个位置参数“。

实际上,我正在尝试执行以下操作,就像在SQL语法中那样:

代码语言:javascript
复制
select 1,2,3,4,5,6,7,8,9,10,11,12,13,sum(14),sum(15),sum(16),sum(17),sum(18),sum(19),sum(20),sum(21),sum(22),sum(23),sum(24),sum(25),sum(26),sum(27),sum(28),sum(29)
from df group by 1,2,3,4,5,6,7,8,9,10,11,12,13

我也希望完成这个过程,所以我最终得到了与旧的相同的数据格式(很明显,行数更少了!)

任何帮助都要感谢,谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-08 17:11:17

一种使用.select_dtypes(文档)隔离数字列的稍微通用的方法:

代码语言:javascript
复制
import pandas as pd
import numpy as np

numerical_columns = df.select_dtypes(include=[np.number]).columns.tolist()
other_columns = df.select_dtypes(exclude=[np.number]).columns.tolist()

df.groupby(other_columns)[numerical_columns].sum()

至于为什么您的代码不能工作,这是因为您需要将列名的列表传递给groupby。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44441457

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档