当前位置: 首页 > 知识库问答 >
问题:

规范错误:使用 groupby() 不支持嵌套重命名器

狄睿
2023-03-14

你能帮我解决我的代码中的这个问题吗,因为使用pandas (groupby()、agg())的空间连接给了我下面的错误:

我有一个数据框 df,我使用它中的几列来分组:n 以下方式我几乎得到了我需要的表(数据框)。缺少的是包含每个组中的行数的附加列。换句话说,我有平均值,但我也想知道有多少数字被用来获得这些手段。

简而言之:如何获取数据帧的分组统计信息?

法典:

def bin_the_midpoints(bins, midpoints):
    b = bins.copy()
    m = midpoints.copy()
    reindexed = b.reset_index().rename(columns={'index':'bins_index'})
    joined = gpd.tools.sjoin(reindexed, m)
    bin_stats = joined.groupby('bins_index')['offset']\
                      .agg({'fold': len, 'min_offset': np.min})
    return gpd.GeoDataFrame(b.join(bin_stats))
bin_stats = bin_the_midpoints(bins, midpoints)

错误:

---------------------------------------------------------------------------
SpecificationError                        Traceback (most recent call last)
Input In [103], in <cell line: 9>()
      6     bin_stats = joined.groupby('bins_index')['offset']\
      7                       .agg({'fold': len, 'min_offset': np.min})
      8     return gpd.GeoDataFrame(b.join(bin_stats))
----> 9 bin_stats = bin_the_midpoints(bins, midpoints)

Input In [103], in bin_the_midpoints(bins, midpoints)
      4 reindexed = b.reset_index().rename(columns={'index':'bins_index'})
      5 joined = gpd.tools.sjoin(reindexed, m)
----> 6 bin_stats = joined.groupby('bins_index')['offset']\
      7                   .agg({'fold': len, 'min_offset': np.min})
      8 return gpd.GeoDataFrame(b.join(bin_stats))

File ~\anaconda3\envs\GeoSynapps\lib\site-packages\pandas\core\groupby\generic.py:271, in SeriesGroupBy.aggregate(self, func, engine, engine_kwargs, *args, **kwargs)
    267 elif isinstance(func, abc.Iterable):
    268     # Catch instances of lists / tuples
    269     # but not the class list / tuple itself.
    270     func = maybe_mangle_lambdas(func)
--> 271     ret = self._aggregate_multiple_funcs(func)
    272     if relabeling:
    273         # error: Incompatible types in assignment (expression has type
    274         # "Optional[List[str]]", variable has type "Index")
    275         ret.columns = columns  # type: ignore[assignment]

File ~\anaconda3\envs\GeoSynapps\lib\site-packages\pandas\core\groupby\generic.py:307, in SeriesGroupBy._aggregate_multiple_funcs(self, arg)
    301 def _aggregate_multiple_funcs(self, arg) -> DataFrame:
    302     if isinstance(arg, dict):
    303 
    304         # show the deprecation, but only if we
    305         # have not shown a higher level one
    306         # GH 15931
--> 307         raise SpecificationError("nested renamer is not supported")
    309     elif any(isinstance(x, (tuple, list)) for x in arg):
    310         arg = [(x, x) if not isinstance(x, (tuple, list)) else x for x in arg]

SpecificationError: nested renamer is not supported

共有1个答案

霍财
2023-03-14

你必须阅读更多关于熊猫中agg方法的信息。你可以很容易地在这个方法中添加许多计算。

例如,您可以写:

df.groupby(by=[...]).agg({'col1': ['count', 'sum', 'min']})
 类似资料:
  • 1、模块 模块尽量使用小写命名,首字母保持小写,尽量不要用下划线(除非多个单词,且数量不多的情况) # 正确的模块名 import decoder import html_parser # 不推荐的模块名 import Decoder 2、类名 类名使用驼峰(CamelCase)命名风格,首字母大写,私有类可用一个下划线开头 class Farm(): pass class Anim

  • 问题内容: 我需要确保许多并发用户能够访问数据库。虽然在每次提交后我都关闭了会话,但是有时我的代码遇到以下错误,但是当我几次执行相同的操作时,它会超过错误并可以正常工作。 我的hibernate状态是4.2.1。 我的密码 HibernateUtil 组态 问题答案: 在您的“我的代码”代码段中,可能存在一些问题: 发生异常时,没有阻止关闭会话的块 您正在打电话,但这与有所不同。因此,不会清除。

  • 我正在尝试调试netbean 8.2和JDK 1.8.131上的java代码,但我一直收到这个错误 nbproject\build-impl.xml:1351:执行此行时发生以下错误:nbproject\build-impl.xml:858: nbjpdastart不支持嵌套的"modulepath"元素。 当我谷歌它时,没有关于这个错误的充分解释,我感谢您的帮助,谢谢

  • 问题内容: 运行removeUserFromConference方法时,遇到以下异常: 道方法: 模型类: 问题答案: 您可能已经开始了一笔交易,并尝试开始另一笔交易而没有提交或回滚上一笔交易。使用程序化事务划分时的惯用法如下: 这很麻烦且容易出错,这就是为什么使用EJB或Spring具有声明式事务如此有用的原因之一。

  • There are only two hard problems in computer science: cache invalidation, naming things, and off-by-one errors. — Phil Karlton 当你维护代码时会发现,选择适当而有意义的信息为你的模块或类命名是有很大帮助的。 尤其是当其他人需要阅读或基于你编写的配置清单工作时,这种命名方法是

  • 命名规范使程序更易读,从而更易于理解。它们也可以提供一些有关标识符功能的信息,以助于理解代码,例如,不论它是一个常量,包,还是类 标识符类型 命名规则 示例 包(Packages) 一个唯一包名的前缀总是全部小写的ASCII字母并且是一个顶级域名,通常是com,edu,gov,mil,net,org,或1981年ISO 3166标准所指定的标识国家的英文双字符代码。包名的后续部分根据不同机构各自内