Column selector using FullColumnPath (#3572)

* Column selector using FullColumnPath

* column name with as

* standar group by name
This commit is contained in:
Fernando Herrera
2021-06-08 03:34:37 +01:00
committed by GitHub
parent 7eadbd938d
commit 4e6c2c0fa1
3 changed files with 34 additions and 9 deletions

View File

@ -11,6 +11,9 @@ use nu_source::{
};
use num_traits::cast::ToPrimitive;
#[cfg(feature = "dataframe")]
use nu_protocol::dataframe::{NuSeries, PolarsData};
pub trait ValueExt {
fn into_parts(self) -> (UntaggedValue, Tag);
fn get_data(&self, desc: &str) -> MaybeOwned<'_, Value>;
@ -199,6 +202,24 @@ pub fn get_data_by_member(value: &Value, name: &PathMember) -> Result<Value, She
}
}
}
#[cfg(feature = "dataframe")]
UntaggedValue::DataFrame(PolarsData::EagerDataFrame(df)) => match &name.unspanned {
UnspannedPathMember::String(string) => {
let column = df.as_ref().column(string.as_ref()).map_err(|e| {
ShellError::labeled_error("Dataframe error", format!("{}", e), &name.span)
})?;
Ok(NuSeries::series_to_value(
column.clone(),
Tag::new(value.anchor(), name.span),
))
}
_ => Err(ShellError::labeled_error(
"Integer as column",
"Only string as column name",
&name.span,
)),
},
other => Err(ShellError::type_error(
"row or table",
other.type_name().spanned(value.tag.span),