Вы можете использовать go строка за строкой и проверять и суммировать, как показано ниже
import pandas as pd
df = pd.DataFrame([["desktop","01/04/2018",72,"aug",50],
["mobileweb","01/04/2018",1,"aug",60],
["total","01/04/2018","","aug",100],
["desktop","01/04/2018",75848907.6 ,"world",20],
["mobileweb","01/04/2018",105737747.4,"world",30],
["total","01/04/2018","","world",40]],
columns=["traffic_type","date","unique_visitors","region","total_views"])
for index, row in df.iterrows():
if row["unique_visitors"] == "":
df.at[index,"unique_visitors"] = df.loc[(df['date'] == row["date"]) & (df["region"] == row["region"]) & (df["unique_visitors"] != ""), 'unique_visitors'].sum()
print(df)
Вывод
traffic_type date unique_visitors region total_views
0 desktop 01/04/2018 72 aug 50
1 mobileweb 01/04/2018 1 aug 60
2 total 01/04/2018 73 aug 100
3 desktop 01/04/2018 7.58489e+07 world 20
4 mobileweb 01/04/2018 1.05738e+08 world 30
5 total 01/04/2018 1.81587e+08 world 40
для окончательного ответа, вы должны go строка за строкой и добавьте эти строки в исходный набор данных.