Возникла необходимость перемножить значения датафреймов по конкретному условию, а именно:
Есть некоторый Датафрейм
И датафрейм
Условие такое:
Если в строке значение столбца ‘nol3’ начинается с ‘dom’, то все значения умножить на значение столбца dom со второго датафрейма. Аналогичное условие и для maindom, main
В итоге должно получится:
Из наработок кода имеется (но либо выдаёт ошибку, либо выдаёт неверный результат):
подскажите, что необходимо исправить/добавить в код, что бы отработало верно
Есть некоторый Датафрейм
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'])
Col1 | col2 | col3 | nol1 | nol2 | nol3 |
1 | 2 | 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 |
Python:
dataframe_from_list = [[3,2,4]]
df1 =pd.DataFrame(dataframe_from_list1, columns=['dom','maindom','main'])
Dom | maindom | main |
3 | 2 | 4 |
Если в строке значение столбца ‘nol3’ начинается с ‘dom’, то все значения умножить на значение столбца dom со второго датафрейма. Аналогичное условие и для maindom, main
В итоге должно получится:
col1 | Col2 | col3 | nol1 | nol2 | nol3 |
3 | 6 | 21 | 12 | 12 | dom_1 |
6 | 8 | 2 | 8 | 8 | maindom_1 |
30 | 60 | 15 | 12 | 12 | dom_2 |
16 | 24 | 8 | 16 | 16 | main |
4 | 14 | 2 | 8 | 8 | maindom_2 |
4 | 24 | 8 | 16 | 16 | main |
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])
подскажите, что необходимо исправить/добавить в код, что бы отработало верно