Почему-то я не мог найти правильное решение для моей проблемы.Я хотел вычислить сумму между столбцом Unit и Scen с равными значениями для той же даты fact_date.Вывод должен выглядеть следующим образом:
Вывод:
Combination Unit_Com Scen Value_Sum Town Country
11-Apr a,b 1 28 Town A USA
11-Apr a,b 2 31 Town A USA
11-Apr a,c 1 30 Town A USA
11-Apr a,c 2 30 Town A USA
11-Apr a,d 1 31 Town A USA
11-Apr a,d 2 29 Town A USA
11-Apr b,c 1 32 Town A USA
11-Apr b,c 2 39 Town A USA
11-Apr b,d 1 33 Town A USA
11-Apr b,d 2 38 Town A USA
11-Apr c,d 1 35 Town A USA
11-Apr c,d 2 37 Town A USA
10-Apr a,b 1 28 Town A USA
10-Apr a,b 2 25 Town A USA
10-Apr a,c 1 32 Town A USA
10-Apr a,c 2 26 Town A USA
10-Apr a,d 1 38 Town A USA
10-Apr a,d 2 22 Town A USA
10-Apr b,c 1 24 Town A USA
10-Apr b,c 2 27 Town A USA
10-Apr b,d 1 30 Town A USA
10-Apr b,d 2 23 Town A USA
10-Apr c,d 1 34 Town A USA
10-Apr c,d 2 24 Town A USA
, который вычисляется следующим образом:
fact_date: 11-Apr
Town: Town A
Country: USA
Unit: a
Scen(Unit a): 1
Value: 13
Unit: b
Scen(Unit a): 1
Value: 15
**Output (as shown above):**
fact_date: 11-Apr
Unit_Combo: a,b
Scen: 1
Value_Sum: 28
Town: Town A
Country USA
Thisзатем следует выполнить для каждой даты fact_date.
И, наконец, комбинации между Town A and Town B
, а также, например, a, e и т. д.
К сожалению, я не получаюлюбая комбинация, и я застрял здесь:
ОБНОВЛЕНИЕ:
Я обновил код, но каким-то образом все еще получаю неправильный вывод
calculating date: 11-Apr
11-Apr 1,1 a,b Town A,Town A USA,USA 28
11-Apr 1,2 a,b Town A,Town A USA,USA 33
11-Apr 1,1 a,c Town A,Town A USA,USA 30
11-Apr 1,2 a,c Town A,Town A USA,USA 32
11-Apr 1,1 a,d Town A,Town A USA,USA 31
11-Apr 1,2 a,d Town A,Town A USA,USA 31
11-Apr 1,1 a,b Town A,Town A USA,USA 23
11-Apr 1,2 a,b Town A,Town A USA,USA 26
11-Apr 1,1 a,c Town A,Town A USA,USA 27
11-Apr 1,2 a,c Town A,Town A USA,USA 27
11-Apr 1,1 a,d Town A,Town A USA,USA 33
11-Apr 1,2 a,d Town A,Town A USA,USA 23
calculating date: 10-Apr
10-Apr 2,1 a,b Town A,Town A USA,USA 26
10-Apr 2,2 a,b Town A,Town A USA,USA 31
10-Apr 2,1 a,c Town A,Town A USA,USA 28
10-Apr 2,2 a,c Town A,Town A USA,USA 30
10-Apr 2,1 a,d Town A,Town A USA,USA 29
10-Apr 2,2 a,d Town A,Town A USA,USA 29
10-Apr 2,1 a,b Town A,Town A USA,USA 21
10-Apr 2,2 a,b Town A,Town A USA,USA 24
10-Apr 2,1 a,c Town A,Town A USA,USA 25
10-Apr 2,2 a,c Town A,Town A USA,USA 25
10-Apr 2,1 a,d Town A,Town A USA,USA 31
10-Apr 2,2 a,d Town A,Town A USA,USA 21
Кодвыглядит следующим образом:
import pandas as pd
df = pd.DataFrame({'fact_date': ['11-Apr','11-Apr','11-Apr','11-Apr','11-Apr','11-Apr','11-Apr','11-Apr','10-Apr','10-Apr','10-Apr','10-Apr','10-Apr','10-Apr','10-Apr','10-Apr','11-Apr','11-Apr','11-Apr','11-Apr','11-Apr','11-Apr','11-Apr','11-Apr','10-Apr','10-Apr','10-Apr','10-Apr','10-Apr','10-Apr','10-Apr','10-Apr'],
'Unit': ['a','a','b','b','c','c','d','d','a','a','b','b','c','c','d','d','e','e','f','f','g','g','h','h','i','i','j','j','k','k','l','l'],
'Town': ['Town A','Town A','Town A','Town A','Town A','Town A','Town A','Town A','Town A','Town A','Town A','Town A','Town A','Town A','Town A','Town A','Town B','Town B','Town B','Town B','Town B','Town B','Town B','Town B','Town B','Town B','Town B','Town B','Town B','Town B','Town B','Town B'],
'Scen': [1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2],
'Value': [13,11,15,20,17,19,18,18,18,12,10,13,14,14,20,10,18,17,15,19,11,14,14,17,19,10,16,10,16,19,12,11],
'Country': ['USA','USA','USA','USA','USA','USA','USA','USA','USA','USA','USA','USA','USA','USA','USA','USA','USA','USA','USA','USA','USA','USA','USA','USA','USA','USA','USA','USA','USA','USA','USA','USA']})
test_df = pd.DataFrame([])
cluster_names = df['fact_date'].unique()
disjoint_clusters = []
for idx,item in enumerate(cluster_names):
df[df['fact_date'] == item]
print('calculating date: ' +str(item))
for j in range(idx+1, len(df)):
if df.iloc[idx]['Unit'] != df.iloc[j]['Unit'] and df.iloc[idx]['Town'] == 'Town A' and df.iloc[j]['Town'] == 'Town A':
print(item,
str(df.iloc[idx]['Scen'])+str(',')+str(df.iloc[j]['Scen']),
df.iloc[idx]['Unit']+str(',')+df.iloc[j]['Unit'],
df.iloc[idx]['Town']+str(',')+df.iloc[j]['Town'],
df.iloc[idx]['Country']+str(',')+df.iloc[j]['Country'],
df.iloc[idx]['Value']+df.iloc[j]['Value'])