python - Python:ValueError:不能同时执行聚合和转换操作
问题描述
以下代码给出了错误:ValueError: cannot perform both aggregation and transformation operations simultaneously
。关于违规行的任何一般想法以及解决方案是什么?我猜它与.agg
线条有关,但不确定转换是什么或如何解决这个问题。这个for
循环来自一个更大的函数,它有多个依赖项,所以很难排除故障。
作为参考,df
是一个 Pandas DataFrame,partitions
是一个列表。
aggregations = {}
partitions = finished_partitions
max_partitions = None
for i, partition in enumerate(partitions):
if i % 100 == 1:
print("Finished {} partitions...".format(i))
if max_partitions is not None and i > max_partitions:
break
grouped_columns = df.loc[partition].agg(aggregations, squeeze=False)
sensitive_counts = df.loc[partition].groupby(sensitive_column).agg({sensitive_column : 'count'})
values = grouped_columns.iloc[0].to_dict()
for sensitive_value, count in sensitive_counts[sensitive_column].items():
if count == 0:
continue
values.update({
sensitive_column : sensitive_value,
'count' : count,
})
rows.append(values.copy())
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-87-e447bbcf95ea> in <module>
8 if max_partitions is not None and i > max_partitions:
9 break
---> 10 grouped_columns = df.loc[partition].agg(aggregations, squeeze=False)
11 sensitive_counts = df.loc[partition].groupby(sensitive_column).agg({sensitive_column : 'count'})
12 values = grouped_columns.iloc[0].to_dict()
/emr/notebook-env/lib/python3.7/site-packages/pandas/core/frame.py in aggregate(self, func, axis, *args, **kwargs)
7576 result = None
7577 try:
-> 7578 result, how = self._aggregate(func, axis, *args, **kwargs)
7579 except TypeError as err:
7580 exc = TypeError(
/emr/notebook-env/lib/python3.7/site-packages/pandas/core/frame.py in _aggregate(self, arg, axis, *args, **kwargs)
7607 result = result.T if result is not None else result
7608 return result, how
-> 7609 return aggregate(self, arg, *args, **kwargs)
7610
7611 agg = aggregate
/emr/notebook-env/lib/python3.7/site-packages/pandas/core/aggregation.py in aggregate(obj, arg, *args, **kwargs)
580 elif is_dict_like(arg):
581 arg = cast(AggFuncTypeDict, arg)
--> 582 return agg_dict_like(obj, arg, _axis), True
583 elif is_list_like(arg):
584 # we require a list, but not an 'str'
/emr/notebook-env/lib/python3.7/site-packages/pandas/core/aggregation.py in agg_dict_like(obj, arg, _axis)
780 keys_to_use = keys_to_use if keys_to_use != [] else keys
781 axis = 0 if isinstance(obj, ABCSeries) else 1
--> 782 result = concat({k: results[k] for k in keys_to_use}, axis=axis)
783 elif any(is_ndframe):
784 # There is a mix of NDFrames and scalars
/emr/notebook-env/lib/python3.7/site-packages/pandas/core/reshape/concat.py in concat(objs, axis, join, ignore_index, keys, levels, names, verify_integrity, sort, copy)
293 verify_integrity=verify_integrity,
294 copy=copy,
--> 295 sort=sort,
296 )
297
/emr/notebook-env/lib/python3.7/site-packages/pandas/core/reshape/concat.py in __init__(self, objs, axis, join, keys, levels, names, ignore_index, verify_integrity, copy, sort)
340
341 if len(objs) == 0:
--> 342 raise ValueError("No objects to concatenate")
343
344 if keys is None:
ValueError: No objects to concatenate
解决方案
推荐阅读
- android - 为“列”中的可组合项提供不同的对齐方式
- javascript - 科尔多瓦-无admob。如何显示第二个奖励添加?
- git - Windows 上的 Jenkins - 与 Git 集成
- python-3.x - 如何将文本文档的内容随机复制到我的剪贴板
- windows - 将 WSL 中的本地 api 暴露给物理设备和模拟器
- xslt - 如何在 xsl 中比较 +0.00 和 -0.00 以使结果表明它们相等
- lua - 尝试调用 nil 值
- flutter - 如何在 OnChanged 中重置 DropdownButtonField 的值
- python - 如何引用枚举的第一个参数?
- keycloak - Keycloak Provider 登录导致 request-compose 超时错误