Умножить значения одного датафрейма на значения другого датафрейма в зависимости от Условия

Grace

Новичок
Пользователь
Сен 8, 2020
12
0
1
Возникла необходимость перемножить значения датафреймов по конкретному условию, а именно:
Есть некоторый Датафрейм

Python:
dataframe_from_list = [[1,3,7,4,4,'dom_1'],[3,4,1,4,4,'maindom_1'],[10,20,5,4,4,'dom_2'],[4,6,2,4,4,'main'],[2,7,1,4,4,'maindom_2'],[1,6,2,4,4,'main']]
df=pd.DataFrame(dataframe_from_list, Columns=['col1','col2','col3','nol1','nol2','nol3'])
Col1col2col3nol1nol2nol3
12744dom_1
34144maindom_1
1020544dom_2
46244main
27144maindom_2
16244main
И датафрейм
Python:
dataframe_from_list = [[3,2,4]]
df1 =pd.DataFrame(dataframe_from_list1, columns=['dom','maindom','main'])
Dommaindommain
324
Условие такое:
Если в строке значение столбца ‘nol3’ начинается с ‘dom’, то все значения умножить на значение столбца dom со второго датафрейма. Аналогичное условие и для maindom, main
В итоге должно получится:
col1Col2col3nol1nol2nol3
36211212dom_1
68288maindom_1
3060151212dom_2
162481616main
414288maindom_2
42481616main
Из наработок кода имеется (но либо выдаёт ошибку, либо выдаёт неверный результат):
Python:
for row in df.iterrows():
    if df['nol3'].str.stratswith('dom') is True:
        df.row=df.iloc[:,0:5]*df1.dom[0]
    if df['nol3'].str.stratswith('maindom') is True:
        df.row=df.iloc[:,0:5]*df1.maindom[0]
    if df['nol3'].str.stratswith('main') is True:
        df.row=df.iloc[:,0:5]*df1.main[0]

Код:
df=df.where((df['nol3'].str.startswith('dom')),df.iloc[:,0:5]*df1.dom[0])

подскажите, что необходимо исправить/добавить в код, что бы отработало верно
 

Форум IT Специалистов