我有一个熊猫数据栏,它包含13个文本列和16个数字列(总共29列,大约13k行)。我想将数据按前13列进行汇总,并返回16列的结果之和。我尝试了以下几点:
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语法中那样:
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我也希望完成这个过程,所以我最终得到了与旧的相同的数据格式(很明显,行数更少了!)
任何帮助都要感谢,谢谢!
发布于 2017-06-08 17:11:17
一种使用.select_dtypes(文档)隔离数字列的稍微通用的方法:
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。
https://stackoverflow.com/questions/44441457
复制相似问题