Рамка данных добавляет столбец, который учитывается по условию столбца

#python #pandas

Вопрос:

Мне нужно добавить столбец в текущий кадр данных из файла excel, который подсчитывает, сколько раз модель из кадра данных == «ПОПАДАНИЕ» или «ПОПАДАНИЕ». У меня есть 2 столбца фрейма данных (Модель, HK). Столбец HK содержит строки HIT или HITTOP. Ниже приведен код, я сделал счетчик, но он учитывается только в том случае, если в модели есть непустая строка в столбце HK. В фрейме данных есть модели из многих файлов, поэтому в нем есть дубликаты, поэтому мне нужен счетчик при определенных условиях.

 import pandas as pd

df = pd.read_excel(r'C:UsersuserDesktoptestoutput.xlsx')
df['count'] = df.groupby('Model')['HK'].transform('count') #add the count column that counts non empty strings from HK column

df.to_excel(r'C:UsersuserDesktoptestoutput3.xlsx') #save the output
 

Примеры данных:

 d = {'Model': ['model1', 'model2',' model1', 'model1', 'model2'], 'HK': ['HITTOP', 'HIT', "HITTOP", '', '']}
df = pd.DataFrame(data=d)
df

    Model   HK
0   model1  HITTOP
1   model2  HIT
2   model1  HITTOP
3   model1  
4   model2  
 

Желаемый результат:

 f = {'Model': ['model1', 'model2',' model1', 'model1', 'model2'], 'HK': ['HITTOP', 'HIT', "HITTOP", '', ''],
          'Count': ['2', '1', "2", '2', '1']}
df = pd.DataFrame(data=f)
df

    Model   HK    Count
0   model1  HITTOP  2
1   model2  HIT     1
2   model1  HITTOP  2
3   model1          2
4   model2      
 

Комментарии:

1. Пожалуйста, предоставьте некоторые примеры данных и желаемый результат.

2. @альберт да, конечно, проверьте мою правку.

Ответ №1:

 df = df.fillna('')
df2 = df.groupby('HK').apply
    (lambda x: x.shape[0]).rename('Count').reset_index()

df = df.merge(df2, how='left')

    Model      HK  Count
0  model1  HITTOP      2
1  model2     HIT      1
2  model1  HITTOP      2
3  model1              2
4  model2              2