From aaa8d33e84b22d9af5728b5ecf581b14e3b86f39 Mon Sep 17 00:00:00 2001 From: Zeeshan Ali <79842704+mzeeshanali@users.noreply.github.com> Date: Fri, 16 Aug 2024 12:50:17 +0500 Subject: [PATCH 1/2] Added New Method To Add Record By Reference --- main.go | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/main.go b/main.go index e9e29fd..4284489 100644 --- a/main.go +++ b/main.go @@ -433,6 +433,17 @@ func (frame DataFrame) AddRecord(newData []string) DataFrame { return frame } +// Add a new record to the DataFrame +func (frame *DataFrame) AddRecordByReference(newData []string) { + x := Record{Data: []string{}} + + for _, each := range newData { + x.Data = append(x.Data, each) + } + + frame.FrameRecords = append(frame.FrameRecords, x) +} + // Provides a slice of columns in order func (frame DataFrame) Columns() []string { var columns []string From e39e1211499973ce55fd57b65d9e70701d58988d Mon Sep 17 00:00:00 2001 From: Zeeshan Ali <79842704+mzeeshanali@users.noreply.github.com> Date: Fri, 16 Aug 2024 13:06:39 +0500 Subject: [PATCH 2/2] Revert Previous Changes --- README.md | 2 +- main.go | 36 +++++++++++++++++++----------------- main_test.go | 22 +++++++++++----------- 3 files changed, 31 insertions(+), 29 deletions(-) diff --git a/README.md b/README.md index 4f58363..a39d2d5 100644 --- a/README.md +++ b/README.md @@ -168,7 +168,7 @@ if err != nil { ```go // Add a new record data := [6]string{"11", "2022-01-01", "123", "456", "Kevin", "Kevison"} -df.AddRecord(data[:]) +df = df.AddRecord(data[:]) // Update a value for _, row := range df.FrameRecords { diff --git a/main.go b/main.go index 7b6b6d5..4284489 100644 --- a/main.go +++ b/main.go @@ -370,7 +370,7 @@ func (frame DataFrame) KeepColumns(columns []string) DataFrame { for _, column := range columns { newData = append(newData, row.Val(column, frame.Headers)) } - df.AddRecord(newData) + df = df.AddRecord(newData) } return df @@ -421,7 +421,7 @@ func (frame *DataFrame) Rename(originalColumnName, newColumnName string) error { } // Add a new record to the DataFrame -func (frame *DataFrame) AddRecord(newData []string) { +func (frame DataFrame) AddRecord(newData []string) DataFrame { x := Record{Data: []string{}} for _, each := range newData { @@ -429,6 +429,8 @@ func (frame *DataFrame) AddRecord(newData []string) { } frame.FrameRecords = append(frame.FrameRecords, x) + + return frame } // Add a new record to the DataFrame @@ -472,7 +474,7 @@ func (frame DataFrame) Copy() DataFrame { df := CreateNewDataFrame(headers) for i := 0; i < len(frame.FrameRecords); i++ { - df.AddRecord(frame.FrameRecords[i].Data) + df = df.AddRecord(frame.FrameRecords[i].Data) } return df } @@ -495,27 +497,27 @@ func (frame DataFrame) Where(fieldName, operator, value string) DataFrame { switch operator { case "==": if val == value { - newFrame.AddRecord(frame.FrameRecords[i].Data) + newFrame = newFrame.AddRecord(frame.FrameRecords[i].Data) } case "!=": if val != value { - newFrame.AddRecord(frame.FrameRecords[i].Data) + newFrame = newFrame.AddRecord(frame.FrameRecords[i].Data) } case ">": if val > value { - newFrame.AddRecord(frame.FrameRecords[i].Data) + newFrame = newFrame.AddRecord(frame.FrameRecords[i].Data) } case "<": if val < value { - newFrame.AddRecord(frame.FrameRecords[i].Data) + newFrame = newFrame.AddRecord(frame.FrameRecords[i].Data) } case ">=": if val >= value { - newFrame.AddRecord(frame.FrameRecords[i].Data) + newFrame = newFrame.AddRecord(frame.FrameRecords[i].Data) } case "<=": if val <= value { - newFrame.AddRecord(frame.FrameRecords[i].Data) + newFrame = newFrame.AddRecord(frame.FrameRecords[i].Data) } } } @@ -539,7 +541,7 @@ func (frame DataFrame) Filtered(fieldName string, value ...string) DataFrame { for i := 0; i < len(frame.FrameRecords); i++ { if slices.Contains(value, frame.FrameRecords[i].Data[frame.Headers[fieldName]]) { - newFrame.AddRecord(frame.FrameRecords[i].Data) + newFrame = newFrame.AddRecord(frame.FrameRecords[i].Data) } } @@ -569,7 +571,7 @@ func (frame DataFrame) GreaterThanOrEqualTo(fieldName string, value float64) (Da } if val >= value { - newFrame.AddRecord(frame.FrameRecords[i].Data) + newFrame = newFrame.AddRecord(frame.FrameRecords[i].Data) } } return newFrame, nil @@ -598,7 +600,7 @@ func (frame DataFrame) LessThanOrEqualTo(fieldName string, value float64) (DataF } if val <= value { - newFrame.AddRecord(frame.FrameRecords[i].Data) + newFrame = newFrame.AddRecord(frame.FrameRecords[i].Data) } } return newFrame, nil @@ -620,7 +622,7 @@ func (frame DataFrame) Exclude(fieldName string, value ...string) DataFrame { for i := 0; i < len(frame.FrameRecords); i++ { if !slices.Contains(value, frame.FrameRecords[i].Data[frame.Headers[fieldName]]) { - newFrame.AddRecord(frame.FrameRecords[i].Data) + newFrame = newFrame.AddRecord(frame.FrameRecords[i].Data) } } @@ -648,7 +650,7 @@ func (frame DataFrame) FilteredAfter(fieldName, desiredDate string) DataFrame { isAfter := recordDate.After(dateConverter(desiredDate)) if isAfter { - newFrame.AddRecord(frame.FrameRecords[i].Data) + newFrame = newFrame.AddRecord(frame.FrameRecords[i].Data) } } return newFrame @@ -675,7 +677,7 @@ func (frame DataFrame) FilteredBefore(fieldName, desiredDate string) DataFrame { isBefore := recordDate.Before(dateConverter(desiredDate)) if isBefore { - newFrame.AddRecord(frame.FrameRecords[i].Data) + newFrame = newFrame.AddRecord(frame.FrameRecords[i].Data) } } @@ -704,7 +706,7 @@ func (frame DataFrame) FilteredBetween(fieldName, startDate, endDate string) Dat isBefore := recordDate.Before(dateConverter(endDate)) if isAfter && isBefore { - newFrame.AddRecord(frame.FrameRecords[i].Data) + newFrame = newFrame.AddRecord(frame.FrameRecords[i].Data) } } @@ -956,7 +958,7 @@ func (frame DataFrame) InnerMerge(dfRight *DataFrame, primaryKey string) DataFra } } - dfNew.AddRecord(data) + dfNew = dfNew.AddRecord(data) } } return dfNew diff --git a/main_test.go b/main_test.go index 5176e8a..11f1e7a 100644 --- a/main_test.go +++ b/main_test.go @@ -85,7 +85,7 @@ func TestDynamicMetrics(t *testing.T) { // Add data to DataFrame data := []string{fmt.Sprintf("%f", v)} - df.AddRecord(data) + df = df.AddRecord(data) if v > recordedMax { recordedMax = v @@ -202,7 +202,7 @@ func TestStandardDeviationMethodPass(t *testing.T) { for i := 0; i < 1000; i++ { val := strconv.Itoa(i) - df.AddRecord([]string{"ID-" + val, val}) + df = df.AddRecord([]string{"ID-" + val, val}) } stdev, err := df.StandardDeviation("Value") @@ -226,10 +226,10 @@ func TestStandardDeviationMethodFail(t *testing.T) { for i := 0; i < 1000; i++ { // Insert row with value that cannot be converted to float64. if i == 500 { - df.AddRecord([]string{"ID-" + "500", "5x0x0x"}) + df = df.AddRecord([]string{"ID-" + "500", "5x0x0x"}) } val := strconv.Itoa(i) - df.AddRecord([]string{"ID-" + val, val}) + df = df.AddRecord([]string{"ID-" + val, val}) } _, err := df.StandardDeviation("Value") @@ -479,7 +479,7 @@ func TestAddRecord(t *testing.T) { path := "./" df := CreateDataFrame(path, "data/tests/TestData.csv") newData := [6]string{"11", "2022-06-23", "101", "500", "Ben", "Benison"} - df.AddRecord(newData[:]) + df = df.AddRecord(newData[:]) if df.CountRecords() != 11 { t.Error("Add Record: Count does not match.") @@ -668,7 +668,7 @@ func TestMergeFramesAllColumns(t *testing.T) { // Prep left frame df := CreateDataFrame(path, "data/tests/TestData.csv") newData := [6]string{"11", "2022-06-27", "5467", "9586", "Cassandra", "SchmaSandra"} - df.AddRecord(newData[:]) + df = df.AddRecord(newData[:]) // Prep right frame dfRight := CreateDataFrame(path, "data/tests/TestMergeData.csv") @@ -715,7 +715,7 @@ func TestMergeFramesSpecifiedColumns(t *testing.T) { // Prep left frame df := CreateDataFrame(path, "data/tests/TestData.csv") newData := [6]string{"11", "2022-06-27", "5467", "9586", "Cassandra", "SchmaSandra"} - df.AddRecord(newData[:]) + df = df.AddRecord(newData[:]) // Prep right frame dfRight := CreateDataFrame(path, "data/tests/TestMergeData.csv") @@ -982,9 +982,9 @@ func TestAssortment(t *testing.T) { // Add Records newData := [6]string{"21", "2022-01-01", "200", "585", "Tommy", "Thompson"} - df.AddRecord(newData[:]) + df = df.AddRecord(newData[:]) newDataTwo := [6]string{"22", "2022-01-31", "687", "948", "Sarah", "McSarahson"} - df.AddRecord(newDataTwo[:]) + df = df.AddRecord(newDataTwo[:]) if df.CountRecords() != 22 { t.Error("Assortment: concat count incorrect.") @@ -1112,7 +1112,7 @@ func TestAutoCount(t *testing.T) { fmt.Sprintf("%f", val), fmt.Sprintf("%f", sq), } - df.AddRecord(data) + df = df.AddRecord(data) } if df.CountRecords() != 1_000 { @@ -1132,7 +1132,7 @@ func TestAutoSum(t *testing.T) { fmt.Sprintf("%f", val), fmt.Sprintf("%f", sq), } - df.AddRecord(data) + df = df.AddRecord(data) } if df.Sum("value") != 333_833_500.0 {