Умножьте ряды панд на значения словаря

#python

Вопрос:

У меня есть серия панд

 A    3
B    5
 

и словарь

 dic={'A':4 , 'B':3}
 

Я хотел сопоставить и умножить этот ряд на словарь и его значения.

Таким образом, результат таков

 A    12
B    15
 

Возможно ли это?

Я пытался

 s=s.mul(s.map(dic))    
 

Ответ №1:

Это должно произойти, если вы преобразуете входные серии pandas в фрейм данных:

 df = pd.DataFrame({
    'a': [1,2,3,4,5],
    'b': [5,4,3,3,4],
    'c': [3,2,4,3,10],
    'd': [3, 2, 1, 1, 1]
})
params = {'a': 2.5, 'b': 3.0, 'c': 1.3, 'd': 0.9}

df1 = df.assign(**params).mul(df)
 

Ответ №2:

Просто сделайте а Series из своего словаря, и вы сможете легко его умножить

 s1 = pd.Series({'A':3 , 'B':5})
s2 = pd.Series({'A':4 , 'B':3})

s3 = s1*s2
print(s3)

A    12
B    15
dtype: int64
 

В зависимости от того, чего вы хотите достичь, эта функция также может помочь.

 def multiply(series, dictionary):
    r = {}
    for k in series.keys():
        if k in dictionary:
            r[k] = series[k] * dictionary[k]

    return pd.Series(r)