小编Rob*_*bin的帖子

python 字典理解如何与内部的 lambda 函数一起工作

我的目标是使用agg函数聚合 pandas DataFrameGroupBy 对象。

为了做到这一点,我正在生成一个字典,我将使用 dict unpacking through 将其解压为 kwargs **dict。该字典需要包含新列名作为键和元组作为值。元组的第一个值是列名称,该列名称被压缩为一个系列,并作为 的输入提供给第二个值lambda series: ...

agg_dict = {
   f"{cat_name}_count": ('movement_state', lambda series: series.value_counts()[cat_name]) 
   for cat_name in ml_data['category_column'].cat.categories
}

# Aggregating
agg_ml_data = ml_data.groupby(['col1', 'col2']).agg(**agg_dict)
Run Code Online (Sandbox Code Playgroud)

现在实际发生的事情对我来说有点奇怪。

假设:

ml_data['category_column'].cat.categories
Run Code Online (Sandbox Code Playgroud)
Index(['cat1', 'cat2', 'cat3'], dtype='object')
Run Code Online (Sandbox Code Playgroud)

一组的正确值计数是

one_group['category_column'].value_counts()
Run Code Online (Sandbox Code Playgroud)
     | category_column
cat1 | 2
cat2 | 9
cat3 | 6
Run Code Online (Sandbox Code Playgroud)

一组的预期输出:

猫1_计数 猫2_计数 猫3_计数
2 9 6

一组的实际输出

猫1_计数 猫2_计数 猫3_计数
6 6 6

不知何故,python 对 lambda 函数执行的 dict 理解并不像预期的那样,并且cat3在索引时仅使用最后一个类别值series.value_counts()[cat_name] …

python lambda pandas dictionary-comprehension

4
推荐指数
1
解决办法
832
查看次数

标签 统计

dictionary-comprehension ×1

lambda ×1

pandas ×1

python ×1