Есть 2 Dataframes формы (6, 4) и (6,2). Требуется выполнить умножение элементов по 2 кадрам данных.Element wise Умножение 2 DataFrames
>>> import pandas as pd
>>> df1 = pd.DataFrame({'col1' : [1,2,6,8,-1,3], 'col2' : [1,2,6,8,-1,3], 'col3' : [1,2,6,8,-1,3], 'col4' : [1,2,6,8,-1,3]})
>>> df1
col1 col2 col3 col4
0 1 1 1 1
1 2 2 2 2
2 6 6 6 6
3 8 8 8 8
4 -1 -1 -1 -1
5 3 3 3 3
>>>
>>> df2 = pd.DataFrame({'col1' : [9,8,7,1,1,1], 'col2' : [11,12,16,2,2,1]})
>>> df2
col1 col2
0 9 11
1 8 12
2 7 16
3 1 2
4 1 2
5 1 1
Ожидаемый результат:
0 9 9 9 9
1 16 16 16 16
2 42 42 42 42
3 8 8 8 8
4 -1 -1 -1 -1
5 3 3 3 3
0 11 11 11 11
1 24 24 24 24
2 96 96 96 96
3 16 16 16 16
4 -2 -2 -2 -2
5 3 3 3 3
Подход 1:
a = np.array(df1.values)
b = np.array(df2.values)
Пробовал ниже способов,
c = a * b
Ошибка: #ValueError: операнды не могут передаваться вместе с формы (6, 4) и (6,2)
подход 2:
Старинная 1 из dataframes в серии.
df_temp=df1[df1.columns.values['a']]
func = lambda x: np.asarray(x) * np.asarray(df2[df2.columns.values[0]])
df_temp.apply(func)
Выход: Не получать элементный мудрый выход.
подход 3:
Преобразование DF в список и умножать списки:
df11=list(df1.values.flatten())
df22=list(df2.values.flatten())
Но результирующий список не является 2 мерная ;. Его 1 размер.
Вот ссылка на документацию на .multiply(): http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.multiply.html – Alex