У меня есть небольшой пример данных:
import pandas as pd
d = {
'measure1_x': [10,12,20,30,21],
'measure2_x':[11,12,10,3,3],
'measure3_x':[10,0,12,1,1],
'measure1_y': [1,2,2,3,1],
'measure2_y':[1,1,1,3,3],
'measure3_y':[1,0,2,1,1]
}
df = pd.DataFrame(d)
df = df.reindex_axis([
'measure1_x','measure2_x', 'measure3_x','measure1_y','measure2_y','measure3_y'
], axis=1)
это выглядит так:
measure1_x measure2_x measure3_x measure1_y measure2_y measure3_y
10 11 10 1 1 1
12 12 0 2 1 0
20 10 12 2 1 2
30 3 1 3 3 1
21 3 1 1 3 1
Я создал имена столбцов почти одинаковыми, за исключением '_x' и '_y'чтобы помочь определить, какая пара должна умножаться: я хочу умножить пару с тем же именем столбца, когда игнорируются '_x' и '_y', затем я хочу суммировать числа, чтобы получить общее число, имейте в виду мой фактический набор данныхогромен, и столбцы не в этом идеальном порядке, поэтому это наименование является способом определения правильных пар для умножения:
total = measure1_x * measure1_y + measure2_x * measure2_y + measure3_x * measure3_y
желаемый вывод:
measure1_x measure2_x measure3_x measure1_y measure2_y measure3_y total
10 11 10 1 1 1 31
12 12 0 2 1 0 36
20 10 12 2 1 2 74
30 3 1 3 3 1 100
21 3 1 1 3 1 31
моя попытка и мыслительный процесс, но не может быть продолжен с точки зрения синтаксиса:
#first identify the column names that has '_x' and '_y', then identify if
#the column names are the same after removing '_x' and '_y', if the pair has
#the same name then multiply them, do that for all pairs and sum the results
#up to get the total number
for colname in df.columns:
if "_x".lower() in colname.lower() or "_y".lower() in colname.lower():
if "_x".lower() in colname.lower():
colnamex = colname
if "_y".lower() in colname.lower():
colnamey = colname
#if colnamex[:-2] are the same for colnamex and colnamey then multiply and sum