У меня есть датафрейм, и я использую groupby, чтобы сгруппировать его по сезону. Один из столбцов исходного df называется Check и состоит из True и False. Моя цель - подсчитать истинные значения для каждой группы и поместить их в новый фрейм данных.

import pandas as pd

df = ....
df['Check'] = df['Actual'] == df['Prediction']
grouped_per_year = df.groupby('Season')

df_2= pd.DataFrame()
df_2['Seasons'] = total_matches_per_year.keys()
df_2['Successes'] = ''
df_2['Total_Matches'] = list(grouped_per_year.size())
df_2['SR'] = df_2['Successes'] / df_2['Total_Matches']
df_2['Money_In'] = list(grouped_per_year['Money_In'].apply(sum))
df_2['Profit (%)'] = (df_profit['Money_In'] - df_profit['Total_Matches']) / df_profit['Total_Matches'] * 100.

Я пытался:

successes_per_year = grouped_per_year['Pred_Check'].value_counts()

Но я не знаю, как получить только Истинный счет.

5
IordanouGiannis 26 Авг 2014 в 13:37
Ответ Джориса, очевидно, работает. Вы также можете сделать логический выбор [x == True] в сочетании с count ().
 – 
JohnE
26 Авг 2014 в 16:47

1 ответ

Лучший ответ

Для подсчета True вы также можете использовать sum (поскольку True = 1 и False = 0 при выполнении числовой операции):

grouped_per_year['Pred_Check'].sum()
12
joris 26 Авг 2014 в 13:43