left:
Code: Select all
left_csv = b"""
track_name,type,yield,group
8CEB45v1,corn,0.146957,A
A188v2,corn,0.86308,A
B73v6,corn,0.326076,A
CI6621v1,sweetcorn,0.0357792,A
CML103v1,sweetcorn,0.510464,A
""".strip()
Code: Select all
right_csv = b"""
track_name,type,yield,group
8CEB45v1,corn,0.999,A
B1234,pepper,1,B
B1235,pepper,2,B
""".strip()
Code: Select all
import polars as pl
left = pl.read_csv(left_csv)
right = pl.read_csv(right_csv)
matching_columns = list(set(left.columns) & set(right.columns)) # I do this since I want to join sometimes frame which does not have a 100 % column match. In that case I want to simply add the new columns to the full frame.
full = left.join(
right,
on=matching_columns,
how="full",
coalesce=True,
maintain_order="left",
)
full
Code: Select all
shape: (8, 4)
┌────────────┬───────────┬───────────┬───────┐
│ track_name ┆ type ┆ yield ┆ group │
│ --- ┆ --- ┆ --- ┆ --- │
│ str ┆ str ┆ f64 ┆ str │
╞════════════╪═══════════╪═══════════╪═══════╡
│ 8CEB45v1 ┆ corn ┆ 0.146957 ┆ A │
│ A188v2 ┆ corn ┆ 0.86308 ┆ A │
│ B73v6 ┆ corn ┆ 0.326076 ┆ A │
│ CI6621v1 ┆ sweetcorn ┆ 0.0357792 ┆ A │
│ CML103v1 ┆ sweetcorn ┆ 0.510464 ┆ A │
│ B1234 ┆ pepper ┆ 1.0 ┆ B │
│ B1235 ┆ pepper ┆ 2.0 ┆ B │
│ 8CEB45v1 ┆ corn ┆ 0.999 ┆ A │
└────────────┴───────────┴───────────┴───────┘
Code: Select all
yieldCode: Select all
shape: (7, 4)
┌────────────┬───────────┬───────────┬───────┐
│ track_name ┆ type ┆ yield ┆ group │
│ --- ┆ --- ┆ --- ┆ --- │
│ str ┆ str ┆ f64 ┆ str │
╞════════════╪═══════════╪═══════════╪═══════╡
│ 8CEB45v1 ┆ corn ┆ 0.999 ┆ A │
│ A188v2 ┆ corn ┆ 0.86308 ┆ A │
│ B73v6 ┆ corn ┆ 0.326076 ┆ A │
│ CI6621v1 ┆ sweetcorn ┆ 0.0357792 ┆ A │
│ CML103v1 ┆ sweetcorn ┆ 0.510464 ┆ A │
│ B1234 ┆ pepper ┆ 1.0 ┆ B │
│ B1235 ┆ pepper ┆ 2.0 ┆ B │
└────────────┴───────────┴───────────┴───────┘
Mobile version