Вы можете использовать concat :
result = pd.concat([df, df[df.fruit.isin(fruits)].assign(new=1)], sort=False).fillna(0)
Выход
fruit cost new
0 apples 2 0.0
1 oranges 3 0.0
2 bananas 5 0.0
3 grapefruit 1 0.0
0 apples 2 1.0
1 oranges 3 1.0
В качестве альтернативы вы можете переиндексировать, default_value = 0до конкатета:
filtered = df[df.fruit.isin(fruits)].assign(new=1)
result = pd.concat([df.reindex(columns=filtered.columns, fill_value=0), filtered], sort=False)
print(result)
Выход
fruit cost new
0 apples 2 0
1 oranges 3 0
2 bananas 5 0
3 grapefruit 1 0
0 apples 2 1
1 oranges 3 1