Every DataFrame library with a significant user base uses function chaining because that's the best workflow for such stuff. Also notebook support / magic cell comments for iterative EDA.
Python: polars-py, pandas, pySpark
JVM: Spark
R: R
Go can't compete with this even with SIMD support.