in src/dataframe.rs [416:448]
fn join(
&self,
right: PyDataFrame,
how: &str,
left_on: Vec<PyBackedStr>,
right_on: Vec<PyBackedStr>,
) -> PyDataFusionResult<Self> {
let join_type = match how {
"inner" => JoinType::Inner,
"left" => JoinType::Left,
"right" => JoinType::Right,
"full" => JoinType::Full,
"semi" => JoinType::LeftSemi,
"anti" => JoinType::LeftAnti,
how => {
return Err(PyDataFusionError::Common(format!(
"The join type {how} does not exist or is not implemented"
)));
}
};
let left_keys = left_on.iter().map(|s| s.as_ref()).collect::<Vec<&str>>();
let right_keys = right_on.iter().map(|s| s.as_ref()).collect::<Vec<&str>>();
let df = self.df.as_ref().clone().join(
right.df.as_ref().clone(),
join_type,
&left_keys,
&right_keys,
None,
)?;
Ok(Self::new(df))
}