I'm trying to develop a class in python (Object Oriented). I want to keep the information of each defined object from that class into a pandas data frame, so at the end, I get a data frame that contains all of my object's info in it. How's that possible? What I've done until now is:
class SupplyChain:
def __init__(self, projectName, frame_type, NBeams, NColumns, TotalFrameWeight, Dist,
RegisterationDate, EarliestPossibleSendTime, LatestSendTime, CurrentDay = 0):
self.Name = projectName
self.FrameType = frame_type
self.TotalBeams = NBeams
self.TotalColumns = NColumns
self.TotalFrameWeight = TotalFrameWeight
self.DistanceToSite = Dist
self.DateofRegistration = RegisterationDate
self.EarliestDelivery = self.DateofRegistration + EarliestPossibleSendTime
self.LatestDelivery = self.DateofRegistration + LatestSendTime
self.CurrentDate = CurrentDay
self.FrameCost = self.TotalFrameWeight * 1000 * 31000
if self.DistanceToSite <= 1000:
self.TransportationCost = self.DistanceToSite * self.TotalFrameWeight * 20000
else :
self.TransportationCost = 1000 * TotalFrameWeight * 20000 + ( self.DistanceToSite - 1000 ) * self.TotalFrameWeight * 25000
self.IsDelivered = 0
self.DateofDelivery = 0
self.StorageCost = 0.01 * self.FrameCost * (self.DateofDelivery - self.DateofRegistration)
if self.DateofDelivery > self.LatestDelivery :
self.DelayCost = 0.05 * self.FrameCost * (self.DateofDelivery - self.LatestDelivery)
else:
self.DelayCost = 0
self.Profit = self.FrameCost + self.TransportationCost - self.StorageCost - self.DelayCost
Columns = ["Name", "Type", "Number of Beams", "Number of Columns", "Total Weight","Distance to Site Location",
"Date of Registeration", "Earliest Time to Deliver", "Latest Time to Deliver", "Current Day",
"Frame Cost", "Transportation Cost", "Is Delivered?", "Date of Delivery", "Cost of Storage",
"Cost of Delay", "Project Profit" ]
self.df = pd.DataFrame(columns=Columns)
def PandasDataFrame(self):
self.df.loc[len(self.df.index)] = [self.Name, self.FrameType, self.TotalBeams, self.TotalColumns,
self.TotalFrameWeight, self.DistanceToSite, self.DateofRegistration,
self.EarliestDelivery, self.LatestDelivery, self.CurrentDate, self.FrameCost,
self.TransportationCost, self.IsDelivered, self.DateofDelivery,
self.StorageCost, self.DelayCost, self.Profit]
return self.df
I know it's not what I want, but I couldn't think of any other way.