你能帮我解决我的代码中的这个问题吗,因为使用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
你必须阅读更多关于熊猫中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标准所指定的标识国家的英文双字符代码。包名的后续部分根据不同机构各自内