Я пытаюсь понять, есть ли лучший и более эффективный способ сделать это:Пример данных:
df = pd.DataFrame ({'ID' : ['A','A','A','A','B','B','B','B'],
'Month' : [-4,-3,1,2,-3,-2,1,2],
'Cost' : [20,30,10,15,1,2,5,10] })
Затем я сгруппировал ID:
df = df.groupby(ID)
Затем я объединяю стоимость с условием <0 и> 0 в цикле for и сохраняю вывод в новом dataFrame:
output = pd.DataFrame([])
for group, data in df:
totalPre = 0
totalPost = 0
for row_index, row in data.iterrows():
if row ['Month'] < 0:
totalPre = totalPre + row ['Cost']
elif row['Month'] > 0:
totalPost = totalPost + row ['Cost']
output = output.append(pd.DataFrame({'ID': group, 'Total pre': totalPre,'Total post': totalPost }, index=[0]), ignore_index=True)
И вот вывод:
index ID. Total pre Total post
0 A 50 25
1 B 3 15
Спасибо.