尝试将多个函数聚合到新列时出现意外的 KeyError Pandas
Posted
技术标签:
【中文标题】尝试将多个函数聚合到新列时出现意外的 KeyError Pandas【英文标题】:Unexpected KeyError Pandas while trying to aggregate multiple functions into new column 【发布时间】:2015-01-20 12:14:07 【问题描述】:我看过以下问题:
Apply multiple functions to multiple groupby columns
我有类似
的数据 p.date p.instrument p.sector \
11372 2013-02-15 00:00:00 A Health Care
11373 2013-02-15 00:00:00 AA Materials
11374 2013-02-15 00:00:00 AAPL Information Technology
11375 2013-02-15 00:00:00 ABBV Health Care
11376 2013-02-15 00:00:00 ABC Health Care
p.industry p.retn p.pfwt b.bwt
11372 Health Care Equipment & Services -5.232929 NaN 0.000832
11373 Aluminum 0.328947 NaN 0.000907
11374 Computer Hardware -1.373927 NaN 0.031137
11375 Pharmaceuticals 2.756020 NaN 0.004738
11376 Health Care Distribution & Services -0.371179 NaN 0.000859
但是当我尝试时:
test1.groupby("p.sector").agg('r1': lambda x: x['p.pfwt'].sum())
我得到了错误
KeyError: 'r1'
我正在尝试使用当前 DataFrame 的一组结果创建新列。
我错过了什么?谢谢
【问题讨论】:
聚合字典中的键必须与数据帧中预先存在的键相对应。您的数据框中没有“r1”列,因此您无法汇总不存在的内容 【参考方案1】:使用
test1.groupby("p.sector").agg('p.pfwt': np.sum)
例如见this pandas docs。
聚合字典中的键必须与数据帧中预先存在的键相对应。您的程序失败,因为您的数据框中没有“r1”列,因此它无法聚合不存在的内容。 如果您需要重命名结果,那么您可以像这样为 Series 添加链式操作:.agg([np.sum, np.mean, np.std]).rename(columns='sum': 'foo', 'mean': 'bar', 'std': 'baz') )
【讨论】:
谢谢@joaquin 我想在结果数据框中添加新列,表示来自源数据框的计算信息。有什么办法吗? 新信息汇总在 p.pfwt 中。如果您不喜欢该名称,您可以在聚合后更改它。无论如何p.pfwt原始数据都会丢失,因为聚合后不能保留原始信息(至少没有额外处理)以上是关于尝试将多个函数聚合到新列时出现意外的 KeyError Pandas的主要内容,如果未能解决你的问题,请参考以下文章
pyspark:在同一列(使用数组)上使用多个 UDF 函数时出现意外行为
通过 MongoAPI 对 Azure Cosmos DB 进行聚合查询时出现意外错误
将 XAMPP 文件夹移动到新计算机,现在在尝试启动 MySQL 时出现“(XAMPPErrorDomain error 1.)”