Заполнение пропущенных значений путем условной группировки по количеству элементов после группировки - PullRequest
0 голосов
/ 10 февраля 2019

Итак, мой набор данных относится к этому типу, где в столбце 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 с наиболее распространенным значением в каждой группе.Однако, если количество элементов после группировки меньше <20, вы хотите увидеть наиболее распространенное значение только внутри группировки B и TAXCLASS.</p>

Это то, что я пытался сделать:


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: не удалось передать операнды вместе с фигурами Не могли бы вы помочь?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...