f64 -> i64, and more fixs for europe arkfundsio

This commit is contained in:
Elijah McMorris 2024-06-08 12:32:14 -07:00
parent 9696094a15
commit 6357036192
Signed by: NexVeridian
SSH key fingerprint: SHA256:bsA1SKZxuEcEVHAy3gY1HUeM5ykRJl0U0kQHQn0hMg8

View file

@ -318,7 +318,7 @@ impl Ark {
.with_columns([ .with_columns([
Series::new("market_value", [None::<i64>]).lit(), Series::new("market_value", [None::<i64>]).lit(),
Series::new("shares", [None::<i64>]).lit(), Series::new("shares", [None::<i64>]).lit(),
Series::new("share_price", [None::<i64>]).lit(), Series::new("share_price", [None::<f64>]).lit(),
]) ])
.collect()?; .collect()?;
} }
@ -340,10 +340,10 @@ impl Ark {
) )
.with_columns([ .with_columns([
Series::new("date", [chrono::Local::now().naive_local()]).lit(), Series::new("date", [chrono::Local::now().naive_local()]).lit(),
Series::new("ticker", [None::<&str>]).lit(), Series::new("ticker", [None::<String>]).lit(),
Series::new("market_value", [None::<i64>]).lit(), Series::new("market_value", [None::<i64>]).lit(),
Series::new("shares", [None::<i64>]).lit(), Series::new("shares", [None::<i64>]).lit(),
Series::new("share_price", [None::<i64>]).lit(), Series::new("share_price", [None::<f64>]).lit(),
]) ])
.collect()?; .collect()?;
} }
@ -356,7 +356,7 @@ impl Ark {
if df if df
.get_column_names() .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("fund");
_ = df.drop_in_place("weight_rank"); _ = df.drop_in_place("weight_rank");
@ -364,30 +364,32 @@ impl Ark {
df = df df = df
.lazy() .lazy()
.with_columns([ .with_columns([
Series::new("ticker", [None::<&str>]).lit(), Series::new("ticker", [None::<String>]).lit(),
Series::new("market_value", [None::<i64>]).lit(), Series::new("market_value", [None::<i64>]).lit(),
Series::new("shares", [None::<i64>]).lit(), Series::new("shares", [None::<i64>]).lit(),
Series::new("share_price", [None::<i64>]).lit(), Series::new("share_price", [None::<f64>]).lit(),
]) ])
.collect()?; .collect()?;
} }
Ok(df.into()) Ok(df.into())
} }
pub fn df_format(df: DF) -> Result<DF, Error> { pub fn df_format(df: DF) -> Result<DF, Error> {
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_arkvx(df.into())?.collect()?;
df = Self::df_format_europe(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_($)") { if df.get_column_names().contains(&"market_value_($)") {
df = df df = df
.lazy() .lazy()
.rename( .rename(vec!["market_value_($)"], vec!["market_value"])
vec!["market_value_($)", "weight_(%)"], .collect()?;
vec!["market_value", "weight"], }
) if df.get_column_names().contains(&"weight_($)") {
df = df
.lazy()
.rename(vec!["weight_(%)"], vec!["weight"])
.collect()?; .collect()?;
} }
if df.get_column_names().contains(&"market value ($)") { if df.get_column_names().contains(&"market value ($)") {
@ -399,6 +401,12 @@ impl Ark {
) )
.collect()?; .collect()?;
} }
if df.get_column_names().contains(&"weight ($)") {
df = df
.lazy()
.rename(vec!["weight (%)"], vec!["weight"])
.collect()?;
}
if df.get_column_names().contains(&"fund") { if df.get_column_names().contains(&"fund") {
_ = df.drop_in_place("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 // rename values
expressions.push( expressions.push(
col("ticker") col("ticker")
@ -624,7 +625,6 @@ impl Ark {
.rstrip(None), .rstrip(None),
); );
// run expressions
df = df df = df
.lazy() .lazy()
.with_columns(expressions) .with_columns(expressions)
@ -646,6 +646,32 @@ impl Ark {
.collect()? .collect()?
} }
let mut expressions: Vec<Expr> = 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") { if df.get_column_names().contains(&"share_price") {
df = df.select([ df = df.select([
"date", "date",