python - 根据分组后的元素个数进行条件分组填充缺失值
问题描述
所以我的数据集属于这种类型,其中 ZIP 列中存在一些缺失值。提到下面的列:
d = {'BLOCK': [1, 1,2,2,3], 'ZIP': [10004, 10003, 10004, 10002, 10004], 'TAXCLASS': [1,2,2,1,1], 'B': [1,1,2,3,1]}
zipBlock = pd.DataFrame(data=d)
zipBlock
BLOCK ZIP TAXCLASS B
0 1 10004 1 1
1 1 10003 2 1
2 2 10004 2 2
3 2 10002 1 3
4 3 10004 1 1
有 100000 个这样的条目,df 仅供参考。
我想按相应的 B、BLOCK 和 TAXCLASS 进行分组,找到该分组中各种 zip 的出现次数,然后用每个分组中最常见的值填充缺失的 ZIP。但是,如果分组后的元素个数小于 <20,则只想看到 B 和 TAXCLASS 分组内最常见的值。
这是我尝试做的:
from collections import Counter
import pandas as pd
import numpy as np
def Most_Common(lst):
data = Counter(lst)
return data.most_common(1)[0][0]
zipBlock['ZIP5']= np.where(zipBlock.groupby(["B", "BLOCK", "TAXCLASS"])
['ZIP'].size() > 20,\
zipBlock.groupby(["B","BLOCK", "TAXCLASS"])["ZIP"].\
transform(lambda x: x.fillna(Most_Common(x))),
zipBlock.groupby(["B", "TAXCLASS"])["ZIP"].\
transform(lambda x: x.fillna(Most_Common(x))))
这是我得到的错误:
ValueError:操作数无法与形状一起广播你能帮忙吗?
解决方案
推荐阅读
- javascript - 在本机反应中从 json 对象访问特定数据
- reactjs - 在平面列表上创建动画
- javascript - JavaScript中的三等号首先比较类型的值?
- python - 熊猫数据框无法更新包含括号和逗号的列名的行值
- python - 为什么名称'self'没有在django中定义,甚至包括self
- swift - 如何将 snapkit 中按钮的宽度设置为最小且不超过最大宽度
- android - 如何创建具有多个相同参数的 kotlin 数据类构造函数?
- spring-boot - 如何在单个 gradle assemble 任务中同时生成 bootWar 和 bootJar?
- linux - ksh 远程函数调用另一个远程函数3
- flutter - 如何根据下面的flutter代码向容器添加on-press功能