【发布时间】:2018-08-13 10:41:25
【问题描述】:
运行 Python 3.6.4、pandas 0.22 和 numpy 1.14.1
我希望从 Pandas GroupBy object 中提取特定值。
我正在使用我的初始数据集,打开dataframe 过滤掉不必要的列。然后我正在做一个groupby,其中 D、E、F、G 和 H 列分别根据 A、B 和 C 列求和。这给了我需要从中提取值的数据集。
首先,这是我使用的组类型的示例。 (也许这可以纠正)
output = df.groupby(['A', 'B', 'C'], as_index=False).agg({'D': [np.sum], 'E': [np.sum],'F': [np.sum],'G': [np.sum],'H': [np.sum]})
如果有帮助,A、B 和 C 列都是字符串,其中 D 到 H 都使用to_numeric 方法转换为数字。
接下来,我希望使用 A 列的最大值从这个新数据集中提取一个特定值。
我可以使用 loc 提取系列,但我想提取某个位置的值,然后将其插入另一个数据帧。也许 loc 会这样做,我只是想确定我从这个组中按对象提取的任何内容都会被放入新的dataframe。所以值是4,我得到一个变量= 4,然后可以把它放到另一个dataframe中。
value = output.at[output.A.idxmax(), 'D']
我得到的错误是TypeError: only integer scalar arrays can be converted to a scalar index
我最好的猜测是,这是基于groupby 返回groupby object 的事实?或者这也应该与 groupby 对象一起使用?
我在这里有什么选择?也许我的groupby 错了?也许我不需要groupby?也许我可以将我的groupby 对象转换为dataframe,然后运行df.at?任何帮助表示赞赏。
另外 - 如果我做错了什么,请帮助我理解“为什么?”连同固定的脚本。我对尽可能多地学习而不是让每个人为我做我的工作非常感兴趣。我喜欢 python 和它的功能,但在这一点上我还是个新手。
干杯
【问题讨论】:
标签: python pandas dataframe group-by typeerror