From 63570361920247c1d9b0a17e94dc093a5da33032 Mon Sep 17 00:00:00 2001 From: NexVeridian Date: Sat, 8 Jun 2024 12:32:14 -0700 Subject: [PATCH] f64 -> i64, and more fixs for europe arkfundsio --- src/util.rs | 68 ++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 47 insertions(+), 21 deletions(-) diff --git a/src/util.rs b/src/util.rs index 19af5e2..9c62c77 100644 --- a/src/util.rs +++ b/src/util.rs @@ -318,7 +318,7 @@ impl Ark { .with_columns([ Series::new("market_value", [None::]).lit(), Series::new("shares", [None::]).lit(), - Series::new("share_price", [None::]).lit(), + Series::new("share_price", [None::]).lit(), ]) .collect()?; } @@ -340,10 +340,10 @@ impl Ark { ) .with_columns([ Series::new("date", [chrono::Local::now().naive_local()]).lit(), - Series::new("ticker", [None::<&str>]).lit(), + Series::new("ticker", [None::]).lit(), Series::new("market_value", [None::]).lit(), Series::new("shares", [None::]).lit(), - Series::new("share_price", [None::]).lit(), + Series::new("share_price", [None::]).lit(), ]) .collect()?; } @@ -356,7 +356,7 @@ impl Ark { if df .get_column_names() - .eq(&["fund", "date", "company", "cusip", "weight", "weight_rank"]) + .eq(&["company", "cusip", "date", "fund", "weight", "weight_rank"]) { _ = df.drop_in_place("fund"); _ = df.drop_in_place("weight_rank"); @@ -364,30 +364,32 @@ impl Ark { df = df .lazy() .with_columns([ - Series::new("ticker", [None::<&str>]).lit(), + Series::new("ticker", [None::]).lit(), Series::new("market_value", [None::]).lit(), Series::new("shares", [None::]).lit(), - Series::new("share_price", [None::]).lit(), + Series::new("share_price", [None::]).lit(), ]) .collect()?; } - Ok(df.into()) } pub fn df_format(df: DF) -> Result { - let mut df = Self::df_format_21shares(df)?.collect()?; + let mut df = Self::df_format_europe_arkfundsio(df)?.collect()?; + df = Self::df_format_21shares(df.into())?.collect()?; df = Self::df_format_arkvx(df.into())?.collect()?; df = Self::df_format_europe(df.into())?.collect()?; - df = Self::df_format_europe_arkfundsio(df.into())?.collect()?; if df.get_column_names().contains(&"market_value_($)") { df = df .lazy() - .rename( - vec!["market_value_($)", "weight_(%)"], - vec!["market_value", "weight"], - ) + .rename(vec!["market_value_($)"], vec!["market_value"]) + .collect()?; + } + if df.get_column_names().contains(&"weight_($)") { + df = df + .lazy() + .rename(vec!["weight_(%)"], vec!["weight"]) .collect()?; } if df.get_column_names().contains(&"market value ($)") { @@ -399,6 +401,12 @@ impl Ark { ) .collect()?; } + if df.get_column_names().contains(&"weight ($)") { + df = df + .lazy() + .rename(vec!["weight (%)"], vec!["weight"]) + .collect()?; + } if df.get_column_names().contains(&"fund") { _ = df.drop_in_place("fund"); @@ -515,13 +523,6 @@ impl Ark { ); } - if df - .fields() - .contains(&Field::new("shares", DataType::Float64)) - { - expressions.push(col("shares").cast(DataType::Int64)); - } - // rename values expressions.push( col("ticker") @@ -624,7 +625,6 @@ impl Ark { .rstrip(None), ); - // run expressions df = df .lazy() .with_columns(expressions) @@ -646,6 +646,32 @@ impl Ark { .collect()? } + let mut expressions: Vec = vec![]; + + if df + .fields() + .contains(&Field::new("market_value", DataType::Float64)) + { + expressions.push(col("market_value").cast(DataType::Int64)); + } + if df + .fields() + .contains(&Field::new("shares", DataType::Float64)) + { + expressions.push(col("shares").cast(DataType::Int64)); + } + if df + .fields() + .contains(&Field::new("share_price", DataType::Int64)) + { + expressions.push(col("share_price").cast(DataType::Float64)); + } + if df.fields().contains(&Field::new("weight", DataType::Int64)) { + expressions.push(col("weight").cast(DataType::Float64)); + } + + df = df.lazy().with_columns(expressions).collect()?; + if df.get_column_names().contains(&"share_price") { df = df.select([ "date",