У меня есть этот код:

import numpy as np
import pandas as pd

df = pd.DataFrame({'a': np.array([1.2, 2.45, 3.33]),
                   'b':np.array([11.3, 11.5, 10.13])})

def mycalc(row):
    return (np.round( np.dot(row['a'], row['b']) /
                  (np.linalg.norm(row['a']) * np.linalg.norm(row['b'])), decimals=2))

df['mycalc'] = df.apply(mycalc, axis=1)

df

Я получаю:

      a     b     mycalc
0   1.20    11.30   1.0
1   2.45    11.50   1.0
2   3.33    10.13   1.0

Если я попробую, для первой строки:

(np.round( (np.dot(df.loc[0, 'a'], df.loc[0,'b'])), decimals=2))

Я получаю: 13,56

Если я попробую одно из следующего:

(np.round( (np.dot(df.loc[0, 'a'], df.loc[0,'b'])), decimals=2)) / (np.round((np.linalg.norm(df.loc[0,'a']) * np.linalg.norm(df.loc[0,'b'])), decimals=2))

Или

(np.round( ((np.dot(df.loc[0, 'a'], df.loc[0,'b'])) /
              (np.linalg.norm(df.loc[0,'a']) * np.linalg.norm(df.loc[0,'b']))), decimals=2))

Я получаю: 1.0

Как я могу заставить десятичный вывод быть 2?

0
George