Вы можете использовать groupby
и count для получения соответствующих значений, а затем merge
для получения правильных значений в результирующем фрейме данных. Например:
data1 = {'Hair': [0,1,0,0,0],
'Feathers': [0,0,1,1,0],
'Eggs': [0,0,0,1,1],
'Type': [1,1,2,2,6]}
df = pd.DataFrame(data1)
data2 = {'Hair': [0,1,1],
'Feathers': [0,0,0],
'Eggs': [0,0,1]}
df2 = pd.DataFrame(data2)
df_counts = df.groupby(['Hair', 'Type']).agg('count')[['Feathers']].reset_index()
df_counts.rename(columns={'Feathers': 'Count'}, inplace=True)
pd.merge(df2, df_counts, how='outer', on='Hair')