Итак, мой набор данных относится к этому типу, где в столбце 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: не удалось передать операнды вместе с фигурами Не могли бы вы помочь?