Вы можете преобразовать свои даты в datetime
, а затем создать логический столбец, который указывает, является ли это ошибкой.Тогда просто groupby
+ mean
, чтобы получить процент.
import pandas as pd
# Create datetimes.
df['CampaignAction Date'] = pd.to_datetime(df['CampaignAction Date'], errors='coerce')
df['Today'] = pd.to_datetime(df['Today'], errors='coerce')
# Create an Error column
mask = df['CampaignAction Date'].notnull()
df.loc[mask, 'Error_per'] = (df.loc[mask,'CampaignAction Date'] >= df.loc[mask, 'Today']).astype(float)
df.groupby('Country').Error_per.mean().reset_index()
Вывод: (для первых двух стран)
Country Error_per
0 Brazil 0.5
1 China 0.2
Вот некоторые примеры данных:
Country CampaignAction Date Today
0 China 5/20/2018 9/20/2018
1 China 6/30/2018 9/20/2018
2 China 1/30/2018 9/20/2018
3 China 3/30/2018 9/20/2018
4 China 9/20/2018
5 China 10/31/2018 9/20/2018
6 Brazil 6/30/2018 9/20/2018
7 Brazil 5/21/2019 9/20/2018