2017-02-23 65 views
1

Мой вопрос очень похож на Multiply two pandas DataFrames based on column и Multiply two data frames with similar index in python pandas, но немного отличается. Я попробовал оба предложения, но это не сработало для меня.Как я могу умножить все элементы столбца фреймворка данных со значением, указанным для этого столбца в другом фрейме?

Все мои входы считываются из файла csv.

Input 1

Attr1 Attr2 
0  10  20 
1  30  40 

Пусть Input 2 определяет веса для attR1 и attr2

Input 2

Attr1 Attr2 
0  5  6 

Мой выход будет перемножения веса от входа 2 к каждой строке, что соответствующий атрибут во входе 1, поэтому мой вывод должен быть

Attr1 Attr2 
0  50  120 
1 150  240 

ответ

3

Вы можете сначала выбрать первую строку в d2 - выход Series, а затем кратно по mul:

print (d2.iloc[0]) 
Attr1 5 
Attr2 6 
Name: 0, dtype: int64 

d = d1.mul(d2.iloc[0]) 
print (d) 
    Attr1 Attr2 
0  50 120 
1 150 240 
+0

Спасибо, что работал! – user2237511

0

Здесь возможное решение:

import pandas as pd 


d1 = pd.DataFrame([[10, 20], [30, 40]], columns=['Attr1', 'Attr2']) 
d2 = pd.DataFrame([[5, 6]], columns=['Attr1', 'Attr2']) 

# iterate over columns of the second dataframe 
for col in d2.columns: 
    # you can check whether col is in d1 
    # if col in d1.columns: 
    d1[col] = d1[col] * d2[col][0]