#python #object
Вопрос:
Мне нужно создавать классы и методы для различных этапов расчета:
У меня есть фрейм данных с числовыми столбцами A,B,C.
Я хочу, чтобы класс инициализировал столбцы фрейма данных в качестве входных данных, чтобы я мог вызывать следующие методы:
Метод1: сумма(А)
Метод2: сумма(А)*В
Как вы это делаете на Python?
Я знаю, что это действительно общий вопрос, но я сталкивался только с действительно абстрактными учебниками по ООП. Мне нужно более подробно рассказать о расчетах и финансах. Хороший источник для какого — нибудь учебника также поможет.
Спасибо,
Канзас
Комментарии:
1. Можете ли вы подробнее объяснить, что вы подразумеваете под «инициализацией столбцов»? Вы хотите убедиться, что в кадре определены столбцы A и B? Вы хотите заполнить его мусорными данными?
2. Итак, я получил фрейм данных под названием df, который уже заполнен числовыми данными в столбцах df[«A»] и df[«B»]. Теперь один метод 1 должен, например, выполнять df[«A»].sum (), а метод 2 должен выполнять df[«A»].sum() *df[«B]. Это понятнее?
3. Таким образом, вы на самом деле не хотите изменять df, вы просто хотите передать его своим методам в качестве входного параметра?
4. Да, совершенно верно. Входными данными должны быть числовые столбцы
Ответ №1:
Ты можешь сделать вот так.
import pandas as pd import numpy as np class MyCalculator: def __init__(self, df): self.df = df def m1(self): return self.df['A'].sum() def m2(self): # return np.multiply(self.m1(), self.df['B']).values return np.multiply(self.m1(), self.df['B']).values.reshape(-1, 1) d = { 'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9] } def main(): df = pd.DataFrame(d) print(f'frame:n {df}') b = MyCalculator(df) print(f'method 1:n {b.m1()}') print(f'method 2:n {b.m2()}') # start main()
Выход:
frame: A B C 0 1 4 7 1 2 5 8 2 3 6 9 method 1: 6 method 2: [[24] [30] [36]]