Dataframe API

API含义
df.get_column_index(name: &str) -> Option<usize>根据name,返回Series对应的索引
df.column(name: &str) -> Result<&Series, PolarsError>根据列名返回Series引用
df.select_at_idx(idx: usize) -> Option<&Series>根据索引返回对应Series的引用
df.select_by_range(range: R) -> Result<DataFrame, PolarsError>根据Range返回新的dataframe
df.columns(&self, names: I) -> Result<Vec<&Series>, PolarsError>let sv: Vec<&Series> = df.columns(["类别", "薪水"])?; 返回Vec<&Series>
df.select(&self, selection: I) -> Result<DataFrame, PolarsError>df.select(["类别", "薪水"])返回新的DataFrame
df.get_columns() -> &[Series]返回所有列的切片
df.take_columns() -> Vec<Series>获得所有列的所有权
df.get_column_names() -> Vec<&PlSmallStr>所有列名的引用
df.get_column_names_owned(&self) -> Vec<PlSmallStr>clone并返回所有列名,所有权。
df.set_column_names (names: I)设置列名
df.dtypes() -> Vec<DataType>返回每个字段的类型
df.filter(mask: &ChunkedArray<BooleanType>) -> Result<DataFrame, PolarsError>mask的每一个元素代表一行,筛选出mask==true的行。
df.take(indices: &ChunkedArray<UInt32Type>) -> Result<DataFrame, PolarsError>返回指定索引的行。 let idx = IdxCa::new("idx".into(), [0, 1, 9]); df.take(&idx)
df.slice(offset: i64, length: usize) -> DataFrame返回切片指定的行。
df.rename(oldname:&str,newname:PlSmallStr) -> Result<&mut DataFrame, PolarsError>重命名字段,df.rename("oldname", "newname".into())
df.sort_in_place(by: impl IntoVec<PlSmallStr>,sort_options) -> Result<&mut DataFrame, PolarsError>就地排序df,df就保存了排序结果,df.sort(["col1","col2"], Default::default())
df.sort (by: impl IntoVec<PlSmallStr>,sort_options) -> Result<DataFrame, PolarsError>排序df,返回排序后新的Dataframe,原变量不变。
df.replace(column: &str,new_col: S) -> Result<&mut DataFrame, PolarsError>替换指定column为新的Series。传入的new_col的name会被赋值为指定的名称
df.with_column(new_col: IntoSeries)df中添加一列,如果new_col的name已经存在,那么覆盖旧值
df.insert_column(index: usize,column: S)在指定索引处插入column
df.hstack_mut(columns: &[Series])df中添加多列,改变df
df.hstack(columns: &[Series])df中添加多列,返回新的dataframe
df.get(idx) -> Option<Vec<AnyValue<'_>>>返回指定行。效率低下
df.with_row_index_mut (name: PlSmallStr, offset: Option) -> -> &mut DataFrame在指定offset索引位置添加索引列,列名name。
df.schema() -> Schema<DataType>获取Dataframe的结构,包含字段名和字段类型。
df.fields() -> Vec<Field>返回字段信息
df. estimated_size()获取堆内存占用,字节为单位。
df.explode(columns: I) -> Result<DataFrame, PolarsError>将list Series解包。见 字符串分割到多行
df.unnest(cols)解包struct到多列. See 字符串分割到多列
df.group_by(["col1","col2"…])分组
df.iter()创建按列迭代器
df.shape()返回(height, width)
df.height()返回高度
df.width()返回宽度
df.clear()清空dataframe
df.is_empty()->Dataframe是否为空
df.vstack(&self, other: &DataFrame)将两个dataframe对应字段连接到一起,返回新的dataframe。other和df的字段顺序、类型、列名必须严格一致。建议在完成vstack操作后调用DataFrame::align_chunks。
df.vstack_mut() 同vstack,vstack_mut修改df本身,而不是返回新dataframe。
df.pop()弹出最后一个字段,并返回被弹出的Series
df.drop_in_place(name: &str)弹出指定字段并返回被弹出的Series
df.drop(name: &str)返回一个新的dataframe,其中指定的字段被删除。
df.drop_many(names: I)删除多个字段,返回一个新的dataframe,其中指定的字段被删除。
df.split_at(offset: i64) -> (DataFrame, DataFrame)指定行索引处分割
df.head(length: Option<usize>)返回新的dataframe,包含df的头length行。
df.tail(length: Option<usize>)返回新的dataframe,包含df的最后length行。
df.unique清除重复行,无法保留原顺序
df.unique_stable清除重复行,保证原顺序,
let mut df2=df1.unique_stable(Some(&["Element".into(),"id".into()]), UniqueKeepStrategy::First, None)?;
df.unique (None, UniqueKeepStrategy::First, None)?
df.is_unique
df.is_duplicated
df.null_count()返回新dataframe其中每个字段包含df对应字段的null值计数