maxframe 0.1.0b5__cp310-cp310-macosx_11_0_arm64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of maxframe might be problematic. Click here for more details.
- maxframe/__init__.py +32 -0
- maxframe/_utils.cpython-310-darwin.so +0 -0
- maxframe/_utils.pxd +33 -0
- maxframe/_utils.pyx +547 -0
- maxframe/codegen.py +528 -0
- maxframe/config/__init__.py +15 -0
- maxframe/config/config.py +443 -0
- maxframe/config/tests/__init__.py +13 -0
- maxframe/config/tests/test_config.py +103 -0
- maxframe/config/tests/test_validators.py +34 -0
- maxframe/config/validators.py +57 -0
- maxframe/conftest.py +139 -0
- maxframe/core/__init__.py +65 -0
- maxframe/core/base.py +156 -0
- maxframe/core/entity/__init__.py +44 -0
- maxframe/core/entity/chunks.py +68 -0
- maxframe/core/entity/core.py +152 -0
- maxframe/core/entity/executable.py +337 -0
- maxframe/core/entity/fuse.py +73 -0
- maxframe/core/entity/objects.py +100 -0
- maxframe/core/entity/output_types.py +90 -0
- maxframe/core/entity/tileables.py +438 -0
- maxframe/core/entity/utils.py +24 -0
- maxframe/core/graph/__init__.py +17 -0
- maxframe/core/graph/builder/__init__.py +16 -0
- maxframe/core/graph/builder/base.py +86 -0
- maxframe/core/graph/builder/chunk.py +430 -0
- maxframe/core/graph/builder/tileable.py +34 -0
- maxframe/core/graph/builder/utils.py +41 -0
- maxframe/core/graph/core.cpython-310-darwin.so +0 -0
- maxframe/core/graph/core.pyx +467 -0
- maxframe/core/graph/entity.py +171 -0
- maxframe/core/graph/tests/__init__.py +13 -0
- maxframe/core/graph/tests/test_graph.py +205 -0
- maxframe/core/mode.py +96 -0
- maxframe/core/operator/__init__.py +34 -0
- maxframe/core/operator/base.py +450 -0
- maxframe/core/operator/core.py +276 -0
- maxframe/core/operator/fetch.py +53 -0
- maxframe/core/operator/fuse.py +29 -0
- maxframe/core/operator/objects.py +72 -0
- maxframe/core/operator/shuffle.py +111 -0
- maxframe/core/operator/tests/__init__.py +13 -0
- maxframe/core/operator/tests/test_core.py +64 -0
- maxframe/core/tests/__init__.py +13 -0
- maxframe/core/tests/test_mode.py +75 -0
- maxframe/dataframe/__init__.py +81 -0
- maxframe/dataframe/arithmetic/__init__.py +359 -0
- maxframe/dataframe/arithmetic/abs.py +33 -0
- maxframe/dataframe/arithmetic/add.py +60 -0
- maxframe/dataframe/arithmetic/arccos.py +28 -0
- maxframe/dataframe/arithmetic/arccosh.py +28 -0
- maxframe/dataframe/arithmetic/arcsin.py +28 -0
- maxframe/dataframe/arithmetic/arcsinh.py +28 -0
- maxframe/dataframe/arithmetic/arctan.py +28 -0
- maxframe/dataframe/arithmetic/arctanh.py +28 -0
- maxframe/dataframe/arithmetic/around.py +152 -0
- maxframe/dataframe/arithmetic/bitwise_and.py +46 -0
- maxframe/dataframe/arithmetic/bitwise_or.py +50 -0
- maxframe/dataframe/arithmetic/bitwise_xor.py +46 -0
- maxframe/dataframe/arithmetic/ceil.py +28 -0
- maxframe/dataframe/arithmetic/core.py +342 -0
- maxframe/dataframe/arithmetic/cos.py +28 -0
- maxframe/dataframe/arithmetic/cosh.py +28 -0
- maxframe/dataframe/arithmetic/degrees.py +28 -0
- maxframe/dataframe/arithmetic/docstring.py +442 -0
- maxframe/dataframe/arithmetic/equal.py +56 -0
- maxframe/dataframe/arithmetic/exp.py +28 -0
- maxframe/dataframe/arithmetic/exp2.py +28 -0
- maxframe/dataframe/arithmetic/expm1.py +28 -0
- maxframe/dataframe/arithmetic/floor.py +28 -0
- maxframe/dataframe/arithmetic/floordiv.py +64 -0
- maxframe/dataframe/arithmetic/greater.py +57 -0
- maxframe/dataframe/arithmetic/greater_equal.py +57 -0
- maxframe/dataframe/arithmetic/invert.py +33 -0
- maxframe/dataframe/arithmetic/is_ufuncs.py +62 -0
- maxframe/dataframe/arithmetic/less.py +57 -0
- maxframe/dataframe/arithmetic/less_equal.py +57 -0
- maxframe/dataframe/arithmetic/log.py +28 -0
- maxframe/dataframe/arithmetic/log10.py +28 -0
- maxframe/dataframe/arithmetic/log2.py +28 -0
- maxframe/dataframe/arithmetic/mod.py +60 -0
- maxframe/dataframe/arithmetic/multiply.py +60 -0
- maxframe/dataframe/arithmetic/negative.py +33 -0
- maxframe/dataframe/arithmetic/not_equal.py +56 -0
- maxframe/dataframe/arithmetic/power.py +68 -0
- maxframe/dataframe/arithmetic/radians.py +28 -0
- maxframe/dataframe/arithmetic/sin.py +28 -0
- maxframe/dataframe/arithmetic/sinh.py +28 -0
- maxframe/dataframe/arithmetic/sqrt.py +28 -0
- maxframe/dataframe/arithmetic/subtract.py +64 -0
- maxframe/dataframe/arithmetic/tan.py +28 -0
- maxframe/dataframe/arithmetic/tanh.py +28 -0
- maxframe/dataframe/arithmetic/tests/__init__.py +13 -0
- maxframe/dataframe/arithmetic/tests/test_arithmetic.py +695 -0
- maxframe/dataframe/arithmetic/truediv.py +64 -0
- maxframe/dataframe/arithmetic/trunc.py +28 -0
- maxframe/dataframe/arrays.py +864 -0
- maxframe/dataframe/core.py +2417 -0
- maxframe/dataframe/datasource/__init__.py +15 -0
- maxframe/dataframe/datasource/core.py +81 -0
- maxframe/dataframe/datasource/dataframe.py +59 -0
- maxframe/dataframe/datasource/date_range.py +504 -0
- maxframe/dataframe/datasource/from_index.py +54 -0
- maxframe/dataframe/datasource/from_records.py +107 -0
- maxframe/dataframe/datasource/from_tensor.py +419 -0
- maxframe/dataframe/datasource/index.py +117 -0
- maxframe/dataframe/datasource/read_csv.py +528 -0
- maxframe/dataframe/datasource/read_odps_query.py +299 -0
- maxframe/dataframe/datasource/read_odps_table.py +253 -0
- maxframe/dataframe/datasource/read_parquet.py +421 -0
- maxframe/dataframe/datasource/series.py +55 -0
- maxframe/dataframe/datasource/tests/__init__.py +13 -0
- maxframe/dataframe/datasource/tests/test_datasource.py +401 -0
- maxframe/dataframe/datastore/__init__.py +26 -0
- maxframe/dataframe/datastore/core.py +19 -0
- maxframe/dataframe/datastore/to_csv.py +227 -0
- maxframe/dataframe/datastore/to_odps.py +162 -0
- maxframe/dataframe/extensions/__init__.py +41 -0
- maxframe/dataframe/extensions/accessor.py +50 -0
- maxframe/dataframe/extensions/reshuffle.py +83 -0
- maxframe/dataframe/extensions/tests/__init__.py +13 -0
- maxframe/dataframe/extensions/tests/test_extensions.py +38 -0
- maxframe/dataframe/fetch/__init__.py +15 -0
- maxframe/dataframe/fetch/core.py +86 -0
- maxframe/dataframe/groupby/__init__.py +82 -0
- maxframe/dataframe/groupby/aggregation.py +350 -0
- maxframe/dataframe/groupby/apply.py +251 -0
- maxframe/dataframe/groupby/core.py +179 -0
- maxframe/dataframe/groupby/cum.py +124 -0
- maxframe/dataframe/groupby/fill.py +141 -0
- maxframe/dataframe/groupby/getitem.py +92 -0
- maxframe/dataframe/groupby/head.py +105 -0
- maxframe/dataframe/groupby/sample.py +214 -0
- maxframe/dataframe/groupby/tests/__init__.py +13 -0
- maxframe/dataframe/groupby/tests/test_groupby.py +374 -0
- maxframe/dataframe/groupby/transform.py +255 -0
- maxframe/dataframe/indexing/__init__.py +84 -0
- maxframe/dataframe/indexing/add_prefix_suffix.py +110 -0
- maxframe/dataframe/indexing/align.py +349 -0
- maxframe/dataframe/indexing/at.py +83 -0
- maxframe/dataframe/indexing/getitem.py +204 -0
- maxframe/dataframe/indexing/iat.py +37 -0
- maxframe/dataframe/indexing/iloc.py +566 -0
- maxframe/dataframe/indexing/insert.py +86 -0
- maxframe/dataframe/indexing/loc.py +411 -0
- maxframe/dataframe/indexing/reindex.py +526 -0
- maxframe/dataframe/indexing/rename.py +462 -0
- maxframe/dataframe/indexing/rename_axis.py +209 -0
- maxframe/dataframe/indexing/reset_index.py +402 -0
- maxframe/dataframe/indexing/sample.py +221 -0
- maxframe/dataframe/indexing/set_axis.py +194 -0
- maxframe/dataframe/indexing/set_index.py +61 -0
- maxframe/dataframe/indexing/setitem.py +130 -0
- maxframe/dataframe/indexing/tests/__init__.py +13 -0
- maxframe/dataframe/indexing/tests/test_indexing.py +488 -0
- maxframe/dataframe/indexing/where.py +308 -0
- maxframe/dataframe/initializer.py +288 -0
- maxframe/dataframe/merge/__init__.py +32 -0
- maxframe/dataframe/merge/append.py +121 -0
- maxframe/dataframe/merge/concat.py +325 -0
- maxframe/dataframe/merge/merge.py +593 -0
- maxframe/dataframe/merge/tests/__init__.py +13 -0
- maxframe/dataframe/merge/tests/test_merge.py +215 -0
- maxframe/dataframe/misc/__init__.py +134 -0
- maxframe/dataframe/misc/_duplicate.py +46 -0
- maxframe/dataframe/misc/accessor.py +276 -0
- maxframe/dataframe/misc/apply.py +692 -0
- maxframe/dataframe/misc/astype.py +236 -0
- maxframe/dataframe/misc/case_when.py +141 -0
- maxframe/dataframe/misc/check_monotonic.py +84 -0
- maxframe/dataframe/misc/cut.py +383 -0
- maxframe/dataframe/misc/datetimes.py +79 -0
- maxframe/dataframe/misc/describe.py +108 -0
- maxframe/dataframe/misc/diff.py +210 -0
- maxframe/dataframe/misc/drop.py +440 -0
- maxframe/dataframe/misc/drop_duplicates.py +248 -0
- maxframe/dataframe/misc/duplicated.py +292 -0
- maxframe/dataframe/misc/eval.py +728 -0
- maxframe/dataframe/misc/explode.py +171 -0
- maxframe/dataframe/misc/get_dummies.py +208 -0
- maxframe/dataframe/misc/isin.py +217 -0
- maxframe/dataframe/misc/map.py +236 -0
- maxframe/dataframe/misc/melt.py +162 -0
- maxframe/dataframe/misc/memory_usage.py +248 -0
- maxframe/dataframe/misc/pct_change.py +150 -0
- maxframe/dataframe/misc/pivot_table.py +262 -0
- maxframe/dataframe/misc/qcut.py +104 -0
- maxframe/dataframe/misc/select_dtypes.py +104 -0
- maxframe/dataframe/misc/shift.py +256 -0
- maxframe/dataframe/misc/stack.py +238 -0
- maxframe/dataframe/misc/string_.py +221 -0
- maxframe/dataframe/misc/tests/__init__.py +13 -0
- maxframe/dataframe/misc/tests/test_misc.py +468 -0
- maxframe/dataframe/misc/to_numeric.py +178 -0
- maxframe/dataframe/misc/transform.py +361 -0
- maxframe/dataframe/misc/transpose.py +136 -0
- maxframe/dataframe/misc/value_counts.py +182 -0
- maxframe/dataframe/missing/__init__.py +53 -0
- maxframe/dataframe/missing/checkna.py +223 -0
- maxframe/dataframe/missing/dropna.py +280 -0
- maxframe/dataframe/missing/fillna.py +275 -0
- maxframe/dataframe/missing/replace.py +439 -0
- maxframe/dataframe/missing/tests/__init__.py +13 -0
- maxframe/dataframe/missing/tests/test_missing.py +89 -0
- maxframe/dataframe/operators.py +273 -0
- maxframe/dataframe/plotting/__init__.py +40 -0
- maxframe/dataframe/plotting/core.py +78 -0
- maxframe/dataframe/plotting/tests/__init__.py +13 -0
- maxframe/dataframe/plotting/tests/test_plotting.py +136 -0
- maxframe/dataframe/reduction/__init__.py +107 -0
- maxframe/dataframe/reduction/aggregation.py +344 -0
- maxframe/dataframe/reduction/all.py +78 -0
- maxframe/dataframe/reduction/any.py +78 -0
- maxframe/dataframe/reduction/core.py +837 -0
- maxframe/dataframe/reduction/count.py +59 -0
- maxframe/dataframe/reduction/cummax.py +30 -0
- maxframe/dataframe/reduction/cummin.py +30 -0
- maxframe/dataframe/reduction/cumprod.py +30 -0
- maxframe/dataframe/reduction/cumsum.py +30 -0
- maxframe/dataframe/reduction/custom_reduction.py +42 -0
- maxframe/dataframe/reduction/kurtosis.py +104 -0
- maxframe/dataframe/reduction/max.py +65 -0
- maxframe/dataframe/reduction/mean.py +61 -0
- maxframe/dataframe/reduction/min.py +65 -0
- maxframe/dataframe/reduction/nunique.py +141 -0
- maxframe/dataframe/reduction/prod.py +76 -0
- maxframe/dataframe/reduction/reduction_size.py +36 -0
- maxframe/dataframe/reduction/sem.py +69 -0
- maxframe/dataframe/reduction/skew.py +89 -0
- maxframe/dataframe/reduction/std.py +53 -0
- maxframe/dataframe/reduction/str_concat.py +48 -0
- maxframe/dataframe/reduction/sum.py +77 -0
- maxframe/dataframe/reduction/tests/__init__.py +13 -0
- maxframe/dataframe/reduction/tests/test_reduction.py +486 -0
- maxframe/dataframe/reduction/unique.py +90 -0
- maxframe/dataframe/reduction/var.py +72 -0
- maxframe/dataframe/sort/__init__.py +34 -0
- maxframe/dataframe/sort/core.py +36 -0
- maxframe/dataframe/sort/sort_index.py +153 -0
- maxframe/dataframe/sort/sort_values.py +311 -0
- maxframe/dataframe/sort/tests/__init__.py +13 -0
- maxframe/dataframe/sort/tests/test_sort.py +81 -0
- maxframe/dataframe/statistics/__init__.py +33 -0
- maxframe/dataframe/statistics/corr.py +280 -0
- maxframe/dataframe/statistics/quantile.py +341 -0
- maxframe/dataframe/statistics/tests/__init__.py +13 -0
- maxframe/dataframe/statistics/tests/test_statistics.py +82 -0
- maxframe/dataframe/tests/__init__.py +13 -0
- maxframe/dataframe/tests/test_initializer.py +29 -0
- maxframe/dataframe/tseries/__init__.py +13 -0
- maxframe/dataframe/tseries/tests/__init__.py +13 -0
- maxframe/dataframe/tseries/tests/test_tseries.py +30 -0
- maxframe/dataframe/tseries/to_datetime.py +297 -0
- maxframe/dataframe/ufunc/__init__.py +27 -0
- maxframe/dataframe/ufunc/tensor.py +54 -0
- maxframe/dataframe/ufunc/ufunc.py +52 -0
- maxframe/dataframe/utils.py +1267 -0
- maxframe/dataframe/window/__init__.py +29 -0
- maxframe/dataframe/window/aggregation.py +96 -0
- maxframe/dataframe/window/core.py +69 -0
- maxframe/dataframe/window/ewm.py +249 -0
- maxframe/dataframe/window/expanding.py +147 -0
- maxframe/dataframe/window/rolling.py +376 -0
- maxframe/dataframe/window/tests/__init__.py +13 -0
- maxframe/dataframe/window/tests/test_ewm.py +70 -0
- maxframe/dataframe/window/tests/test_expanding.py +66 -0
- maxframe/dataframe/window/tests/test_rolling.py +57 -0
- maxframe/env.py +33 -0
- maxframe/errors.py +21 -0
- maxframe/extension.py +81 -0
- maxframe/learn/__init__.py +17 -0
- maxframe/learn/contrib/__init__.py +17 -0
- maxframe/learn/contrib/pytorch/__init__.py +16 -0
- maxframe/learn/contrib/pytorch/run_function.py +110 -0
- maxframe/learn/contrib/pytorch/run_script.py +102 -0
- maxframe/learn/contrib/pytorch/tests/__init__.py +13 -0
- maxframe/learn/contrib/pytorch/tests/test_pytorch.py +42 -0
- maxframe/learn/contrib/utils.py +52 -0
- maxframe/learn/contrib/xgboost/__init__.py +26 -0
- maxframe/learn/contrib/xgboost/classifier.py +86 -0
- maxframe/learn/contrib/xgboost/core.py +156 -0
- maxframe/learn/contrib/xgboost/dmatrix.py +150 -0
- maxframe/learn/contrib/xgboost/predict.py +138 -0
- maxframe/learn/contrib/xgboost/regressor.py +78 -0
- maxframe/learn/contrib/xgboost/tests/__init__.py +13 -0
- maxframe/learn/contrib/xgboost/tests/test_core.py +43 -0
- maxframe/learn/contrib/xgboost/train.py +121 -0
- maxframe/learn/utils/__init__.py +15 -0
- maxframe/learn/utils/core.py +29 -0
- maxframe/lib/__init__.py +15 -0
- maxframe/lib/aio/__init__.py +27 -0
- maxframe/lib/aio/_runners.py +162 -0
- maxframe/lib/aio/_threads.py +35 -0
- maxframe/lib/aio/base.py +82 -0
- maxframe/lib/aio/file.py +85 -0
- maxframe/lib/aio/isolation.py +100 -0
- maxframe/lib/aio/lru.py +242 -0
- maxframe/lib/aio/parallelism.py +37 -0
- maxframe/lib/aio/tests/__init__.py +13 -0
- maxframe/lib/aio/tests/test_aio_file.py +55 -0
- maxframe/lib/compression.py +55 -0
- maxframe/lib/cython/__init__.py +13 -0
- maxframe/lib/cython/libcpp.pxd +30 -0
- maxframe/lib/filesystem/__init__.py +21 -0
- maxframe/lib/filesystem/_glob.py +173 -0
- maxframe/lib/filesystem/_oss_lib/__init__.py +13 -0
- maxframe/lib/filesystem/_oss_lib/common.py +198 -0
- maxframe/lib/filesystem/_oss_lib/glob.py +147 -0
- maxframe/lib/filesystem/_oss_lib/handle.py +156 -0
- maxframe/lib/filesystem/arrow.py +236 -0
- maxframe/lib/filesystem/base.py +263 -0
- maxframe/lib/filesystem/core.py +95 -0
- maxframe/lib/filesystem/fsmap.py +164 -0
- maxframe/lib/filesystem/hdfs.py +31 -0
- maxframe/lib/filesystem/local.py +112 -0
- maxframe/lib/filesystem/oss.py +157 -0
- maxframe/lib/filesystem/tests/__init__.py +13 -0
- maxframe/lib/filesystem/tests/test_filesystem.py +223 -0
- maxframe/lib/filesystem/tests/test_oss.py +182 -0
- maxframe/lib/functools_compat.py +81 -0
- maxframe/lib/mmh3.cpython-310-darwin.so +0 -0
- maxframe/lib/mmh3_src/MurmurHash3.cpp +339 -0
- maxframe/lib/mmh3_src/MurmurHash3.h +43 -0
- maxframe/lib/mmh3_src/mmh3module.cpp +387 -0
- maxframe/lib/sparse/__init__.py +861 -0
- maxframe/lib/sparse/array.py +1604 -0
- maxframe/lib/sparse/core.py +92 -0
- maxframe/lib/sparse/matrix.py +241 -0
- maxframe/lib/sparse/tests/__init__.py +15 -0
- maxframe/lib/sparse/tests/test_sparse.py +476 -0
- maxframe/lib/sparse/vector.py +150 -0
- maxframe/lib/tblib/LICENSE +20 -0
- maxframe/lib/tblib/__init__.py +327 -0
- maxframe/lib/tblib/cpython.py +83 -0
- maxframe/lib/tblib/decorators.py +44 -0
- maxframe/lib/tblib/pickling_support.py +90 -0
- maxframe/lib/tests/__init__.py +13 -0
- maxframe/lib/tests/test_wrapped_pickle.py +51 -0
- maxframe/lib/version.py +620 -0
- maxframe/lib/wrapped_pickle.py +139 -0
- maxframe/mixin.py +100 -0
- maxframe/odpsio/__init__.py +21 -0
- maxframe/odpsio/arrow.py +91 -0
- maxframe/odpsio/schema.py +364 -0
- maxframe/odpsio/tableio.py +322 -0
- maxframe/odpsio/tests/__init__.py +13 -0
- maxframe/odpsio/tests/test_arrow.py +88 -0
- maxframe/odpsio/tests/test_schema.py +297 -0
- maxframe/odpsio/tests/test_tableio.py +136 -0
- maxframe/odpsio/tests/test_volumeio.py +90 -0
- maxframe/odpsio/volumeio.py +95 -0
- maxframe/opcodes.py +590 -0
- maxframe/protocol.py +415 -0
- maxframe/remote/__init__.py +18 -0
- maxframe/remote/core.py +210 -0
- maxframe/remote/run_script.py +121 -0
- maxframe/serialization/__init__.py +26 -0
- maxframe/serialization/arrow.py +95 -0
- maxframe/serialization/core.cpython-310-darwin.so +0 -0
- maxframe/serialization/core.pxd +44 -0
- maxframe/serialization/core.pyi +61 -0
- maxframe/serialization/core.pyx +1094 -0
- maxframe/serialization/exception.py +86 -0
- maxframe/serialization/maxframe_objects.py +39 -0
- maxframe/serialization/numpy.py +91 -0
- maxframe/serialization/pandas.py +202 -0
- maxframe/serialization/scipy.py +71 -0
- maxframe/serialization/serializables/__init__.py +55 -0
- maxframe/serialization/serializables/core.py +262 -0
- maxframe/serialization/serializables/field.py +624 -0
- maxframe/serialization/serializables/field_type.py +589 -0
- maxframe/serialization/serializables/tests/__init__.py +13 -0
- maxframe/serialization/serializables/tests/test_field_type.py +121 -0
- maxframe/serialization/serializables/tests/test_serializable.py +250 -0
- maxframe/serialization/tests/__init__.py +13 -0
- maxframe/serialization/tests/test_serial.py +412 -0
- maxframe/session.py +1310 -0
- maxframe/tensor/__init__.py +183 -0
- maxframe/tensor/arithmetic/__init__.py +315 -0
- maxframe/tensor/arithmetic/abs.py +68 -0
- maxframe/tensor/arithmetic/absolute.py +68 -0
- maxframe/tensor/arithmetic/add.py +82 -0
- maxframe/tensor/arithmetic/angle.py +72 -0
- maxframe/tensor/arithmetic/arccos.py +104 -0
- maxframe/tensor/arithmetic/arccosh.py +91 -0
- maxframe/tensor/arithmetic/arcsin.py +94 -0
- maxframe/tensor/arithmetic/arcsinh.py +86 -0
- maxframe/tensor/arithmetic/arctan.py +106 -0
- maxframe/tensor/arithmetic/arctan2.py +128 -0
- maxframe/tensor/arithmetic/arctanh.py +86 -0
- maxframe/tensor/arithmetic/around.py +114 -0
- maxframe/tensor/arithmetic/bitand.py +95 -0
- maxframe/tensor/arithmetic/bitor.py +102 -0
- maxframe/tensor/arithmetic/bitxor.py +95 -0
- maxframe/tensor/arithmetic/cbrt.py +66 -0
- maxframe/tensor/arithmetic/ceil.py +71 -0
- maxframe/tensor/arithmetic/clip.py +165 -0
- maxframe/tensor/arithmetic/conj.py +74 -0
- maxframe/tensor/arithmetic/copysign.py +78 -0
- maxframe/tensor/arithmetic/core.py +544 -0
- maxframe/tensor/arithmetic/cos.py +85 -0
- maxframe/tensor/arithmetic/cosh.py +72 -0
- maxframe/tensor/arithmetic/deg2rad.py +72 -0
- maxframe/tensor/arithmetic/degrees.py +77 -0
- maxframe/tensor/arithmetic/divide.py +114 -0
- maxframe/tensor/arithmetic/equal.py +76 -0
- maxframe/tensor/arithmetic/exp.py +106 -0
- maxframe/tensor/arithmetic/exp2.py +67 -0
- maxframe/tensor/arithmetic/expm1.py +79 -0
- maxframe/tensor/arithmetic/fabs.py +74 -0
- maxframe/tensor/arithmetic/fix.py +69 -0
- maxframe/tensor/arithmetic/float_power.py +103 -0
- maxframe/tensor/arithmetic/floor.py +77 -0
- maxframe/tensor/arithmetic/floordiv.py +94 -0
- maxframe/tensor/arithmetic/fmax.py +105 -0
- maxframe/tensor/arithmetic/fmin.py +106 -0
- maxframe/tensor/arithmetic/fmod.py +99 -0
- maxframe/tensor/arithmetic/frexp.py +92 -0
- maxframe/tensor/arithmetic/greater.py +77 -0
- maxframe/tensor/arithmetic/greater_equal.py +69 -0
- maxframe/tensor/arithmetic/hypot.py +77 -0
- maxframe/tensor/arithmetic/i0.py +89 -0
- maxframe/tensor/arithmetic/imag.py +67 -0
- maxframe/tensor/arithmetic/invert.py +110 -0
- maxframe/tensor/arithmetic/isclose.py +115 -0
- maxframe/tensor/arithmetic/iscomplex.py +64 -0
- maxframe/tensor/arithmetic/isfinite.py +106 -0
- maxframe/tensor/arithmetic/isinf.py +103 -0
- maxframe/tensor/arithmetic/isnan.py +82 -0
- maxframe/tensor/arithmetic/isreal.py +63 -0
- maxframe/tensor/arithmetic/ldexp.py +99 -0
- maxframe/tensor/arithmetic/less.py +69 -0
- maxframe/tensor/arithmetic/less_equal.py +69 -0
- maxframe/tensor/arithmetic/log.py +92 -0
- maxframe/tensor/arithmetic/log10.py +85 -0
- maxframe/tensor/arithmetic/log1p.py +95 -0
- maxframe/tensor/arithmetic/log2.py +85 -0
- maxframe/tensor/arithmetic/logaddexp.py +80 -0
- maxframe/tensor/arithmetic/logaddexp2.py +78 -0
- maxframe/tensor/arithmetic/logical_and.py +81 -0
- maxframe/tensor/arithmetic/logical_not.py +74 -0
- maxframe/tensor/arithmetic/logical_or.py +82 -0
- maxframe/tensor/arithmetic/logical_xor.py +88 -0
- maxframe/tensor/arithmetic/lshift.py +82 -0
- maxframe/tensor/arithmetic/maximum.py +108 -0
- maxframe/tensor/arithmetic/minimum.py +108 -0
- maxframe/tensor/arithmetic/mod.py +104 -0
- maxframe/tensor/arithmetic/modf.py +83 -0
- maxframe/tensor/arithmetic/multiply.py +81 -0
- maxframe/tensor/arithmetic/nan_to_num.py +99 -0
- maxframe/tensor/arithmetic/negative.py +65 -0
- maxframe/tensor/arithmetic/nextafter.py +68 -0
- maxframe/tensor/arithmetic/not_equal.py +72 -0
- maxframe/tensor/arithmetic/positive.py +47 -0
- maxframe/tensor/arithmetic/power.py +106 -0
- maxframe/tensor/arithmetic/rad2deg.py +71 -0
- maxframe/tensor/arithmetic/radians.py +77 -0
- maxframe/tensor/arithmetic/real.py +70 -0
- maxframe/tensor/arithmetic/reciprocal.py +76 -0
- maxframe/tensor/arithmetic/rint.py +68 -0
- maxframe/tensor/arithmetic/rshift.py +81 -0
- maxframe/tensor/arithmetic/setimag.py +29 -0
- maxframe/tensor/arithmetic/setreal.py +29 -0
- maxframe/tensor/arithmetic/sign.py +81 -0
- maxframe/tensor/arithmetic/signbit.py +65 -0
- maxframe/tensor/arithmetic/sin.py +98 -0
- maxframe/tensor/arithmetic/sinc.py +102 -0
- maxframe/tensor/arithmetic/sinh.py +93 -0
- maxframe/tensor/arithmetic/spacing.py +72 -0
- maxframe/tensor/arithmetic/sqrt.py +81 -0
- maxframe/tensor/arithmetic/square.py +69 -0
- maxframe/tensor/arithmetic/subtract.py +81 -0
- maxframe/tensor/arithmetic/tan.py +88 -0
- maxframe/tensor/arithmetic/tanh.py +92 -0
- maxframe/tensor/arithmetic/tests/__init__.py +15 -0
- maxframe/tensor/arithmetic/tests/test_arithmetic.py +414 -0
- maxframe/tensor/arithmetic/truediv.py +104 -0
- maxframe/tensor/arithmetic/trunc.py +72 -0
- maxframe/tensor/arithmetic/utils.py +65 -0
- maxframe/tensor/array_utils.py +186 -0
- maxframe/tensor/base/__init__.py +34 -0
- maxframe/tensor/base/astype.py +119 -0
- maxframe/tensor/base/atleast_1d.py +74 -0
- maxframe/tensor/base/broadcast_to.py +89 -0
- maxframe/tensor/base/ravel.py +92 -0
- maxframe/tensor/base/tests/__init__.py +13 -0
- maxframe/tensor/base/tests/test_base.py +114 -0
- maxframe/tensor/base/transpose.py +125 -0
- maxframe/tensor/base/unique.py +205 -0
- maxframe/tensor/base/where.py +127 -0
- maxframe/tensor/core.py +724 -0
- maxframe/tensor/datasource/__init__.py +32 -0
- maxframe/tensor/datasource/arange.py +156 -0
- maxframe/tensor/datasource/array.py +415 -0
- maxframe/tensor/datasource/core.py +109 -0
- maxframe/tensor/datasource/empty.py +169 -0
- maxframe/tensor/datasource/from_dataframe.py +70 -0
- maxframe/tensor/datasource/from_dense.py +54 -0
- maxframe/tensor/datasource/from_sparse.py +47 -0
- maxframe/tensor/datasource/full.py +186 -0
- maxframe/tensor/datasource/ones.py +173 -0
- maxframe/tensor/datasource/scalar.py +40 -0
- maxframe/tensor/datasource/tests/__init__.py +13 -0
- maxframe/tensor/datasource/tests/test_datasource.py +278 -0
- maxframe/tensor/datasource/zeros.py +188 -0
- maxframe/tensor/fetch/__init__.py +15 -0
- maxframe/tensor/fetch/core.py +54 -0
- maxframe/tensor/indexing/__init__.py +47 -0
- maxframe/tensor/indexing/choose.py +196 -0
- maxframe/tensor/indexing/compress.py +124 -0
- maxframe/tensor/indexing/core.py +190 -0
- maxframe/tensor/indexing/extract.py +71 -0
- maxframe/tensor/indexing/fill_diagonal.py +183 -0
- maxframe/tensor/indexing/flatnonzero.py +60 -0
- maxframe/tensor/indexing/getitem.py +175 -0
- maxframe/tensor/indexing/nonzero.py +120 -0
- maxframe/tensor/indexing/setitem.py +132 -0
- maxframe/tensor/indexing/slice.py +29 -0
- maxframe/tensor/indexing/take.py +130 -0
- maxframe/tensor/indexing/tests/__init__.py +15 -0
- maxframe/tensor/indexing/tests/test_indexing.py +234 -0
- maxframe/tensor/indexing/unravel_index.py +103 -0
- maxframe/tensor/merge/__init__.py +15 -0
- maxframe/tensor/merge/stack.py +132 -0
- maxframe/tensor/merge/tests/__init__.py +13 -0
- maxframe/tensor/merge/tests/test_merge.py +52 -0
- maxframe/tensor/operators.py +123 -0
- maxframe/tensor/random/__init__.py +168 -0
- maxframe/tensor/random/beta.py +87 -0
- maxframe/tensor/random/binomial.py +137 -0
- maxframe/tensor/random/bytes.py +39 -0
- maxframe/tensor/random/chisquare.py +110 -0
- maxframe/tensor/random/choice.py +186 -0
- maxframe/tensor/random/core.py +234 -0
- maxframe/tensor/random/dirichlet.py +123 -0
- maxframe/tensor/random/exponential.py +94 -0
- maxframe/tensor/random/f.py +135 -0
- maxframe/tensor/random/gamma.py +128 -0
- maxframe/tensor/random/geometric.py +93 -0
- maxframe/tensor/random/gumbel.py +167 -0
- maxframe/tensor/random/hypergeometric.py +148 -0
- maxframe/tensor/random/laplace.py +133 -0
- maxframe/tensor/random/logistic.py +129 -0
- maxframe/tensor/random/lognormal.py +159 -0
- maxframe/tensor/random/logseries.py +122 -0
- maxframe/tensor/random/multinomial.py +133 -0
- maxframe/tensor/random/multivariate_normal.py +192 -0
- maxframe/tensor/random/negative_binomial.py +125 -0
- maxframe/tensor/random/noncentral_chisquare.py +132 -0
- maxframe/tensor/random/noncentral_f.py +126 -0
- maxframe/tensor/random/normal.py +143 -0
- maxframe/tensor/random/pareto.py +140 -0
- maxframe/tensor/random/permutation.py +104 -0
- maxframe/tensor/random/poisson.py +111 -0
- maxframe/tensor/random/power.py +142 -0
- maxframe/tensor/random/rand.py +82 -0
- maxframe/tensor/random/randint.py +121 -0
- maxframe/tensor/random/randn.py +96 -0
- maxframe/tensor/random/random_integers.py +123 -0
- maxframe/tensor/random/random_sample.py +86 -0
- maxframe/tensor/random/rayleigh.py +110 -0
- maxframe/tensor/random/shuffle.py +61 -0
- maxframe/tensor/random/standard_cauchy.py +105 -0
- maxframe/tensor/random/standard_exponential.py +72 -0
- maxframe/tensor/random/standard_gamma.py +120 -0
- maxframe/tensor/random/standard_normal.py +74 -0
- maxframe/tensor/random/standard_t.py +135 -0
- maxframe/tensor/random/tests/__init__.py +15 -0
- maxframe/tensor/random/tests/test_random.py +167 -0
- maxframe/tensor/random/triangular.py +119 -0
- maxframe/tensor/random/uniform.py +131 -0
- maxframe/tensor/random/vonmises.py +131 -0
- maxframe/tensor/random/wald.py +114 -0
- maxframe/tensor/random/weibull.py +140 -0
- maxframe/tensor/random/zipf.py +122 -0
- maxframe/tensor/rechunk/__init__.py +26 -0
- maxframe/tensor/rechunk/rechunk.py +43 -0
- maxframe/tensor/reduction/__init__.py +66 -0
- maxframe/tensor/reduction/all.py +103 -0
- maxframe/tensor/reduction/allclose.py +88 -0
- maxframe/tensor/reduction/any.py +105 -0
- maxframe/tensor/reduction/argmax.py +103 -0
- maxframe/tensor/reduction/argmin.py +103 -0
- maxframe/tensor/reduction/array_equal.py +64 -0
- maxframe/tensor/reduction/core.py +168 -0
- maxframe/tensor/reduction/count_nonzero.py +81 -0
- maxframe/tensor/reduction/cumprod.py +97 -0
- maxframe/tensor/reduction/cumsum.py +101 -0
- maxframe/tensor/reduction/max.py +120 -0
- maxframe/tensor/reduction/mean.py +123 -0
- maxframe/tensor/reduction/min.py +120 -0
- maxframe/tensor/reduction/nanargmax.py +82 -0
- maxframe/tensor/reduction/nanargmin.py +76 -0
- maxframe/tensor/reduction/nancumprod.py +91 -0
- maxframe/tensor/reduction/nancumsum.py +94 -0
- maxframe/tensor/reduction/nanmax.py +111 -0
- maxframe/tensor/reduction/nanmean.py +106 -0
- maxframe/tensor/reduction/nanmin.py +111 -0
- maxframe/tensor/reduction/nanprod.py +94 -0
- maxframe/tensor/reduction/nanstd.py +126 -0
- maxframe/tensor/reduction/nansum.py +115 -0
- maxframe/tensor/reduction/nanvar.py +149 -0
- maxframe/tensor/reduction/prod.py +130 -0
- maxframe/tensor/reduction/std.py +134 -0
- maxframe/tensor/reduction/sum.py +125 -0
- maxframe/tensor/reduction/tests/__init__.py +13 -0
- maxframe/tensor/reduction/tests/test_reduction.py +181 -0
- maxframe/tensor/reduction/var.py +176 -0
- maxframe/tensor/reshape/__init__.py +17 -0
- maxframe/tensor/reshape/reshape.py +188 -0
- maxframe/tensor/reshape/tests/__init__.py +15 -0
- maxframe/tensor/reshape/tests/test_reshape.py +37 -0
- maxframe/tensor/statistics/__init__.py +13 -0
- maxframe/tensor/statistics/percentile.py +175 -0
- maxframe/tensor/statistics/quantile.py +288 -0
- maxframe/tensor/ufunc/__init__.py +26 -0
- maxframe/tensor/ufunc/ufunc.py +200 -0
- maxframe/tensor/utils.py +718 -0
- maxframe/tests/__init__.py +13 -0
- maxframe/tests/test_codegen.py +69 -0
- maxframe/tests/test_protocol.py +144 -0
- maxframe/tests/test_utils.py +376 -0
- maxframe/tests/utils.py +164 -0
- maxframe/typing_.py +37 -0
- maxframe/udf.py +134 -0
- maxframe/utils.py +1114 -0
- maxframe-0.1.0b5.dist-info/METADATA +104 -0
- maxframe-0.1.0b5.dist-info/RECORD +647 -0
- maxframe-0.1.0b5.dist-info/WHEEL +5 -0
- maxframe-0.1.0b5.dist-info/top_level.txt +3 -0
- maxframe_client/__init__.py +17 -0
- maxframe_client/clients/__init__.py +13 -0
- maxframe_client/clients/framedriver.py +118 -0
- maxframe_client/clients/spe.py +104 -0
- maxframe_client/conftest.py +15 -0
- maxframe_client/fetcher.py +264 -0
- maxframe_client/session/__init__.py +22 -0
- maxframe_client/session/consts.py +36 -0
- maxframe_client/session/graph.py +119 -0
- maxframe_client/session/odps.py +482 -0
- maxframe_client/session/task.py +280 -0
- maxframe_client/session/tests/__init__.py +13 -0
- maxframe_client/session/tests/test_task.py +85 -0
- maxframe_client/tests/__init__.py +13 -0
- maxframe_client/tests/test_fetcher.py +89 -0
- maxframe_client/tests/test_session.py +255 -0
|
@@ -0,0 +1,442 @@
|
|
|
1
|
+
# Copyright 1999-2024 Alibaba Group Holding Ltd.
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
|
|
15
|
+
_flex_doc_FRAME = """
|
|
16
|
+
Get {desc} of dataframe and other, element-wise (binary operator `{op_name}`).
|
|
17
|
+
Equivalent to ``{equiv}``, but with support to substitute a fill_value
|
|
18
|
+
for missing data in one of the inputs. With reverse version, `{reverse}`.
|
|
19
|
+
Among flexible wrappers (`add`, `sub`, `mul`, `div`, `mod`, `pow`) to
|
|
20
|
+
arithmetic operators: `+`, `-`, `*`, `/`, `//`, `%`, `**`.
|
|
21
|
+
|
|
22
|
+
Parameters
|
|
23
|
+
----------
|
|
24
|
+
other : scalar, sequence, Series, or DataFrame
|
|
25
|
+
Any single or multiple element data structure, or list-like object.
|
|
26
|
+
axis : {{0 or 'index', 1 or 'columns'}}
|
|
27
|
+
Whether to compare by the index (0 or 'index') or columns
|
|
28
|
+
(1 or 'columns'). For Series input, axis to match Series index on.
|
|
29
|
+
level : int or label
|
|
30
|
+
Broadcast across a level, matching Index values on the
|
|
31
|
+
passed MultiIndex level.
|
|
32
|
+
fill_value : float or None, default None
|
|
33
|
+
Fill existing missing (NaN) values, and any new element needed for
|
|
34
|
+
successful DataFrame alignment, with this value before computation.
|
|
35
|
+
If data in both corresponding DataFrame locations is missing
|
|
36
|
+
the result will be missing.
|
|
37
|
+
|
|
38
|
+
Returns
|
|
39
|
+
-------
|
|
40
|
+
DataFrame
|
|
41
|
+
Result of the arithmetic operation.
|
|
42
|
+
|
|
43
|
+
See Also
|
|
44
|
+
--------
|
|
45
|
+
DataFrame.add : Add DataFrames.
|
|
46
|
+
DataFrame.sub : Subtract DataFrames.
|
|
47
|
+
DataFrame.mul : Multiply DataFrames.
|
|
48
|
+
DataFrame.div : Divide DataFrames (float division).
|
|
49
|
+
DataFrame.truediv : Divide DataFrames (float division).
|
|
50
|
+
DataFrame.floordiv : Divide DataFrames (integer division).
|
|
51
|
+
DataFrame.mod : Calculate modulo (remainder after division).
|
|
52
|
+
DataFrame.pow : Calculate exponential power.
|
|
53
|
+
|
|
54
|
+
Notes
|
|
55
|
+
-----
|
|
56
|
+
Mismatched indices will be unioned together.
|
|
57
|
+
|
|
58
|
+
Examples
|
|
59
|
+
--------
|
|
60
|
+
>>> import maxframe.dataframe as md
|
|
61
|
+
>>> df = md.DataFrame({{'angles': [0, 3, 4],
|
|
62
|
+
... 'degrees': [360, 180, 360]}},
|
|
63
|
+
... index=['circle', 'triangle', 'rectangle'])
|
|
64
|
+
>>> df.execute()
|
|
65
|
+
angles degrees
|
|
66
|
+
circle 0 360
|
|
67
|
+
triangle 3 180
|
|
68
|
+
rectangle 4 360
|
|
69
|
+
|
|
70
|
+
Add a scalar with operator version which return the same
|
|
71
|
+
results.
|
|
72
|
+
|
|
73
|
+
>>> (df + 1).execute()
|
|
74
|
+
angles degrees
|
|
75
|
+
circle 1 361
|
|
76
|
+
triangle 4 181
|
|
77
|
+
rectangle 5 361
|
|
78
|
+
|
|
79
|
+
>>> df.add(1).execute()
|
|
80
|
+
angles degrees
|
|
81
|
+
circle 1 361
|
|
82
|
+
triangle 4 181
|
|
83
|
+
rectangle 5 361
|
|
84
|
+
|
|
85
|
+
Divide by constant with reverse version.
|
|
86
|
+
|
|
87
|
+
>>> df.div(10).execute()
|
|
88
|
+
angles degrees
|
|
89
|
+
circle 0.0 36.0
|
|
90
|
+
triangle 0.3 18.0
|
|
91
|
+
rectangle 0.4 36.0
|
|
92
|
+
|
|
93
|
+
>>> df.rdiv(10).execute()
|
|
94
|
+
angles degrees
|
|
95
|
+
circle inf 0.027778
|
|
96
|
+
triangle 3.333333 0.055556
|
|
97
|
+
rectangle 2.500000 0.027778
|
|
98
|
+
|
|
99
|
+
Subtract a list and Series by axis with operator version.
|
|
100
|
+
|
|
101
|
+
>>> (df - [1, 2]).execute()
|
|
102
|
+
angles degrees
|
|
103
|
+
circle -1 358
|
|
104
|
+
triangle 2 178
|
|
105
|
+
rectangle 3 358
|
|
106
|
+
|
|
107
|
+
>>> df.sub([1, 2], axis='columns').execute()
|
|
108
|
+
angles degrees
|
|
109
|
+
circle -1 358
|
|
110
|
+
triangle 2 178
|
|
111
|
+
rectangle 3 358
|
|
112
|
+
|
|
113
|
+
>>> df.sub(md.Series([1, 1, 1], index=['circle', 'triangle', 'rectangle']),
|
|
114
|
+
... axis='index').execute()
|
|
115
|
+
angles degrees
|
|
116
|
+
circle -1 359
|
|
117
|
+
triangle 2 179
|
|
118
|
+
rectangle 3 359
|
|
119
|
+
|
|
120
|
+
Multiply a DataFrame of different shape with operator version.
|
|
121
|
+
|
|
122
|
+
>>> other = md.DataFrame({{'angles': [0, 3, 4]}},
|
|
123
|
+
... index=['circle', 'triangle', 'rectangle'])
|
|
124
|
+
>>> other.execute()
|
|
125
|
+
angles
|
|
126
|
+
circle 0
|
|
127
|
+
triangle 3
|
|
128
|
+
rectangle 4
|
|
129
|
+
|
|
130
|
+
>>> (df * other).execute()
|
|
131
|
+
angles degrees
|
|
132
|
+
circle 0 NaN
|
|
133
|
+
triangle 9 NaN
|
|
134
|
+
rectangle 16 NaN
|
|
135
|
+
|
|
136
|
+
>>> df.mul(other, fill_value=0).execute()
|
|
137
|
+
angles degrees
|
|
138
|
+
circle 0 0.0
|
|
139
|
+
triangle 9 0.0
|
|
140
|
+
rectangle 16 0.0
|
|
141
|
+
|
|
142
|
+
Divide by a MultiIndex by level.
|
|
143
|
+
|
|
144
|
+
>>> df_multindex = md.DataFrame({{'angles': [0, 3, 4, 4, 5, 6],
|
|
145
|
+
... 'degrees': [360, 180, 360, 360, 540, 720]}},
|
|
146
|
+
... index=[['A', 'A', 'A', 'B', 'B', 'B'],
|
|
147
|
+
... ['circle', 'triangle', 'rectangle',
|
|
148
|
+
... 'square', 'pentagon', 'hexagon']])
|
|
149
|
+
>>> df_multindex.execute()
|
|
150
|
+
angles degrees
|
|
151
|
+
A circle 0 360
|
|
152
|
+
triangle 3 180
|
|
153
|
+
rectangle 4 360
|
|
154
|
+
B square 4 360
|
|
155
|
+
pentagon 5 540
|
|
156
|
+
hexagon 6 720
|
|
157
|
+
|
|
158
|
+
>>> df.div(df_multindex, level=1, fill_value=0).execute()
|
|
159
|
+
angles degrees
|
|
160
|
+
A circle NaN 1.0
|
|
161
|
+
triangle 1.0 1.0
|
|
162
|
+
rectangle 1.0 1.0
|
|
163
|
+
B square 0.0 0.0
|
|
164
|
+
pentagon 0.0 0.0
|
|
165
|
+
hexagon 0.0 0.0
|
|
166
|
+
"""
|
|
167
|
+
|
|
168
|
+
_flex_doc_SERIES = """
|
|
169
|
+
Return {desc} of series and other, element-wise (binary operator `{op_name}`).
|
|
170
|
+
|
|
171
|
+
Equivalent to ``series {equiv} other``, but with support to substitute a fill_value for
|
|
172
|
+
missing data in one of the inputs.
|
|
173
|
+
|
|
174
|
+
Parameters
|
|
175
|
+
----------
|
|
176
|
+
other : Series or scalar value
|
|
177
|
+
fill_value : None or float value, default None (NaN)
|
|
178
|
+
Fill existing missing (NaN) values, and any new element needed for
|
|
179
|
+
successful Series alignment, with this value before computation.
|
|
180
|
+
If data in both corresponding Series locations is missing
|
|
181
|
+
the result will be missing.
|
|
182
|
+
level : int or name
|
|
183
|
+
Broadcast across a level, matching Index values on the
|
|
184
|
+
passed MultiIndex level.
|
|
185
|
+
|
|
186
|
+
Returns
|
|
187
|
+
-------
|
|
188
|
+
Series
|
|
189
|
+
The result of the operation.
|
|
190
|
+
|
|
191
|
+
See Also
|
|
192
|
+
--------
|
|
193
|
+
Series.{reverse}
|
|
194
|
+
|
|
195
|
+
Examples
|
|
196
|
+
--------
|
|
197
|
+
>>> import numpy as np
|
|
198
|
+
>>> import maxframe.dataframe as md
|
|
199
|
+
>>> a = md.Series([1, 1, 1, np.nan], index=['a', 'b', 'c', 'd'])
|
|
200
|
+
>>> a.execute()
|
|
201
|
+
a 1.0
|
|
202
|
+
b 1.0
|
|
203
|
+
c 1.0
|
|
204
|
+
d NaN
|
|
205
|
+
dtype: float64
|
|
206
|
+
|
|
207
|
+
>>> b = md.Series([1, np.nan, 1, np.nan], index=['a', 'b', 'd', 'e'])
|
|
208
|
+
>>> b.execute()
|
|
209
|
+
a 1.0
|
|
210
|
+
b NaN
|
|
211
|
+
d 1.0
|
|
212
|
+
e NaN
|
|
213
|
+
dtype: float64
|
|
214
|
+
"""
|
|
215
|
+
|
|
216
|
+
_flex_comp_doc_FRAME = """
|
|
217
|
+
Get {desc} of dataframe and other, element-wise (binary operator `{op_name}`).
|
|
218
|
+
Among flexible wrappers (`eq`, `ne`, `le`, `lt`, `ge`, `gt`) to comparison
|
|
219
|
+
operators.
|
|
220
|
+
|
|
221
|
+
Equivalent to `dataframe {equiv} other` with support to choose axis (rows or columns)
|
|
222
|
+
and level for comparison.
|
|
223
|
+
|
|
224
|
+
Parameters
|
|
225
|
+
----------
|
|
226
|
+
other : scalar, sequence, Series, or DataFrame
|
|
227
|
+
Any single or multiple element data structure, or list-like object.
|
|
228
|
+
axis : {{0 or 'index', 1 or 'columns'}}, default 'columns'
|
|
229
|
+
Whether to compare by the index (0 or 'index') or columns
|
|
230
|
+
(1 or 'columns').
|
|
231
|
+
level : int or label
|
|
232
|
+
Broadcast across a level, matching Index values on the passed
|
|
233
|
+
MultiIndex level.
|
|
234
|
+
|
|
235
|
+
Returns
|
|
236
|
+
-------
|
|
237
|
+
DataFrame of bool
|
|
238
|
+
Result of the comparison.
|
|
239
|
+
|
|
240
|
+
See Also
|
|
241
|
+
--------
|
|
242
|
+
DataFrame.eq : Compare DataFrames for equality elementwise.
|
|
243
|
+
DataFrame.ne : Compare DataFrames for inequality elementwise.
|
|
244
|
+
DataFrame.le : Compare DataFrames for less than inequality
|
|
245
|
+
or equality elementwise.
|
|
246
|
+
DataFrame.lt : Compare DataFrames for strictly less than
|
|
247
|
+
inequality elementwise.
|
|
248
|
+
DataFrame.ge : Compare DataFrames for greater than inequality
|
|
249
|
+
or equality elementwise.
|
|
250
|
+
DataFrame.gt : Compare DataFrames for strictly greater than
|
|
251
|
+
inequality elementwise.
|
|
252
|
+
|
|
253
|
+
Notes
|
|
254
|
+
-----
|
|
255
|
+
Mismatched indices will be unioned together.
|
|
256
|
+
`NaN` values are considered different (i.e. `NaN` != `NaN`).
|
|
257
|
+
|
|
258
|
+
Examples
|
|
259
|
+
--------
|
|
260
|
+
>>> df = pd.DataFrame({{'cost': [250, 150, 100],
|
|
261
|
+
... 'revenue': [100, 250, 300]}},
|
|
262
|
+
... index=['A', 'B', 'C'])
|
|
263
|
+
>>> df.execute()
|
|
264
|
+
cost revenue
|
|
265
|
+
A 250 100
|
|
266
|
+
B 150 250
|
|
267
|
+
C 100 300
|
|
268
|
+
|
|
269
|
+
Comparison with a scalar, using either the operator or method:
|
|
270
|
+
|
|
271
|
+
>>> (df == 100).execute()
|
|
272
|
+
cost revenue
|
|
273
|
+
A False True
|
|
274
|
+
B False False
|
|
275
|
+
C True False
|
|
276
|
+
|
|
277
|
+
>>> df.eq(100).execute()
|
|
278
|
+
cost revenue
|
|
279
|
+
A False True
|
|
280
|
+
B False False
|
|
281
|
+
C True False
|
|
282
|
+
|
|
283
|
+
When `other` is a :class:`Series`, the columns of a DataFrame are aligned
|
|
284
|
+
with the index of `other` and broadcast:
|
|
285
|
+
|
|
286
|
+
>>> (df != pd.Series([100, 250], index=["cost", "revenue"])).execute()
|
|
287
|
+
cost revenue
|
|
288
|
+
A True True
|
|
289
|
+
B True False
|
|
290
|
+
C False True
|
|
291
|
+
|
|
292
|
+
Use the method to control the broadcast axis:
|
|
293
|
+
|
|
294
|
+
>>> df.ne(pd.Series([100, 300], index=["A", "D"]), axis='index').execute()
|
|
295
|
+
cost revenue
|
|
296
|
+
A True False
|
|
297
|
+
B True True
|
|
298
|
+
C True True
|
|
299
|
+
D True True
|
|
300
|
+
|
|
301
|
+
When comparing to an arbitrary sequence, the number of columns must
|
|
302
|
+
match the number elements in `other`:
|
|
303
|
+
|
|
304
|
+
>>> (df == [250, 100]).execute()
|
|
305
|
+
cost revenue
|
|
306
|
+
A True True
|
|
307
|
+
B False False
|
|
308
|
+
C False False
|
|
309
|
+
|
|
310
|
+
Use the method to control the axis:
|
|
311
|
+
|
|
312
|
+
>>> df.eq([250, 250, 100], axis='index').execute()
|
|
313
|
+
cost revenue
|
|
314
|
+
A True False
|
|
315
|
+
B False True
|
|
316
|
+
C True False
|
|
317
|
+
|
|
318
|
+
Compare to a DataFrame of different shape.
|
|
319
|
+
|
|
320
|
+
>>> other = pd.DataFrame({{'revenue': [300, 250, 100, 150]}},
|
|
321
|
+
... index=['A', 'B', 'C', 'D'])
|
|
322
|
+
>>> other.execute()
|
|
323
|
+
revenue
|
|
324
|
+
A 300
|
|
325
|
+
B 250
|
|
326
|
+
C 100
|
|
327
|
+
D 150
|
|
328
|
+
|
|
329
|
+
>>> df.gt(other).execute()
|
|
330
|
+
cost revenue
|
|
331
|
+
A False False
|
|
332
|
+
B False False
|
|
333
|
+
C False True
|
|
334
|
+
D False False
|
|
335
|
+
|
|
336
|
+
Compare to a MultiIndex by level.
|
|
337
|
+
|
|
338
|
+
>>> df_multindex = pd.DataFrame({{'cost': [250, 150, 100, 150, 300, 220],
|
|
339
|
+
... 'revenue': [100, 250, 300, 200, 175, 225]}},
|
|
340
|
+
... index=[['Q1', 'Q1', 'Q1', 'Q2', 'Q2', 'Q2'],
|
|
341
|
+
... ['A', 'B', 'C', 'A', 'B', 'C']])
|
|
342
|
+
>>> df_multindex.execute()
|
|
343
|
+
cost revenue
|
|
344
|
+
Q1 A 250 100
|
|
345
|
+
B 150 250
|
|
346
|
+
C 100 300
|
|
347
|
+
Q2 A 150 200
|
|
348
|
+
B 300 175
|
|
349
|
+
C 220 225
|
|
350
|
+
|
|
351
|
+
>>> df.le(df_multindex, level=1).execute()
|
|
352
|
+
cost revenue
|
|
353
|
+
Q1 A True True
|
|
354
|
+
B True True
|
|
355
|
+
C True True
|
|
356
|
+
Q2 A False True
|
|
357
|
+
B True False
|
|
358
|
+
C True False
|
|
359
|
+
"""
|
|
360
|
+
|
|
361
|
+
|
|
362
|
+
_flex_comp_doc_SERIES = """
|
|
363
|
+
Return {desc} of series and other, element-wise (binary operator `{op_name}`).
|
|
364
|
+
|
|
365
|
+
Equivalent to ``series {equiv} other``, but with support to substitute a fill_value for
|
|
366
|
+
missing data in one of the inputs.
|
|
367
|
+
|
|
368
|
+
Parameters
|
|
369
|
+
----------
|
|
370
|
+
other : Series or scalar value
|
|
371
|
+
fill_value : None or float value, default None (NaN)
|
|
372
|
+
Fill existing missing (NaN) values, and any new element needed for
|
|
373
|
+
successful Series alignment, with this value before computation.
|
|
374
|
+
If data in both corresponding Series locations is missing
|
|
375
|
+
the result will be missing.
|
|
376
|
+
level : int or name
|
|
377
|
+
Broadcast across a level, matching Index values on the
|
|
378
|
+
passed MultiIndex level.
|
|
379
|
+
|
|
380
|
+
Returns
|
|
381
|
+
-------
|
|
382
|
+
Series
|
|
383
|
+
The result of the operation.
|
|
384
|
+
|
|
385
|
+
Examples
|
|
386
|
+
--------
|
|
387
|
+
>>> import numpy as np
|
|
388
|
+
>>> import maxframe.dataframe as md
|
|
389
|
+
>>> a = md.Series([1, 1, 1, np.nan], index=['a', 'b', 'c', 'd'])
|
|
390
|
+
>>> a.execute()
|
|
391
|
+
a 1.0
|
|
392
|
+
b 1.0
|
|
393
|
+
c 1.0
|
|
394
|
+
d NaN
|
|
395
|
+
dtype: float64
|
|
396
|
+
|
|
397
|
+
>>> b = md.Series([1, np.nan, 1, np.nan], index=['a', 'b', 'd', 'e'])
|
|
398
|
+
>>> b.execute()
|
|
399
|
+
a 1.0
|
|
400
|
+
b NaN
|
|
401
|
+
d 1.0
|
|
402
|
+
e NaN
|
|
403
|
+
dtype: float64
|
|
404
|
+
"""
|
|
405
|
+
|
|
406
|
+
|
|
407
|
+
def bin_arithmetic_doc(
|
|
408
|
+
desc, op_name=None, equiv=None, reverse=None, series_example=None
|
|
409
|
+
):
|
|
410
|
+
def wrapper(fun):
|
|
411
|
+
nonlocal op_name, reverse
|
|
412
|
+
op_name = op_name or fun.__name__
|
|
413
|
+
if reverse is None:
|
|
414
|
+
reverse = op_name[1:] if op_name.startswith("r") else "r" + op_name
|
|
415
|
+
fun.__frame_doc__ = _flex_doc_FRAME.format(
|
|
416
|
+
desc=desc, op_name=op_name, equiv=equiv, reverse=reverse
|
|
417
|
+
)
|
|
418
|
+
fun.__series_doc__ = _flex_doc_SERIES.format(
|
|
419
|
+
desc=desc, op_name=op_name, equiv=equiv, reverse=reverse
|
|
420
|
+
)
|
|
421
|
+
if series_example is not None: # pragma: no branch
|
|
422
|
+
fun.__series_doc__ += "\n" + series_example.strip()
|
|
423
|
+
return fun
|
|
424
|
+
|
|
425
|
+
return wrapper
|
|
426
|
+
|
|
427
|
+
|
|
428
|
+
def bin_compare_doc(desc, op_name=None, equiv=None, series_example=None):
|
|
429
|
+
def wrapper(fun):
|
|
430
|
+
nonlocal op_name
|
|
431
|
+
op_name = op_name or fun.__name__
|
|
432
|
+
fun.__frame_doc__ = _flex_comp_doc_FRAME.format(
|
|
433
|
+
desc=desc, op_name=op_name, equiv=equiv
|
|
434
|
+
)
|
|
435
|
+
fun.__series_doc__ = _flex_comp_doc_SERIES.format(
|
|
436
|
+
desc=desc, op_name=op_name, equiv=equiv
|
|
437
|
+
)
|
|
438
|
+
if series_example is not None: # pragma: no branch
|
|
439
|
+
fun.__series_doc__ += "\n" + series_example.strip()
|
|
440
|
+
return fun
|
|
441
|
+
|
|
442
|
+
return wrapper
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# Copyright 1999-2024 Alibaba Group Holding Ltd.
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
|
|
15
|
+
import numpy as np
|
|
16
|
+
|
|
17
|
+
from ... import opcodes
|
|
18
|
+
from ...utils import classproperty
|
|
19
|
+
from .core import DataFrameBinopUfunc
|
|
20
|
+
from .docstring import bin_compare_doc
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
class DataFrameEqual(DataFrameBinopUfunc):
|
|
24
|
+
_op_type_ = opcodes.EQ
|
|
25
|
+
|
|
26
|
+
_func_name = "eq"
|
|
27
|
+
_rfunc_name = "eq"
|
|
28
|
+
|
|
29
|
+
return_dtype = np.dtype(bool)
|
|
30
|
+
|
|
31
|
+
@classproperty
|
|
32
|
+
def _operator(self):
|
|
33
|
+
return lambda lhs, rhs: lhs.eq(rhs)
|
|
34
|
+
|
|
35
|
+
@classproperty
|
|
36
|
+
def tensor_op_type(self):
|
|
37
|
+
from ...tensor.arithmetic import TensorEqual
|
|
38
|
+
|
|
39
|
+
return TensorEqual
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
_eq_example = """
|
|
43
|
+
>>> a.eq(b, fill_value=0).execute()
|
|
44
|
+
a True
|
|
45
|
+
b False
|
|
46
|
+
c False
|
|
47
|
+
d False
|
|
48
|
+
e False
|
|
49
|
+
dtype: bool
|
|
50
|
+
"""
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
@bin_compare_doc("Equal to", equiv="==", series_example=_eq_example)
|
|
54
|
+
def eq(df, other, axis="columns", level=None):
|
|
55
|
+
op = DataFrameEqual(axis=axis, level=level, lhs=df, rhs=other)
|
|
56
|
+
return op(df, other)
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Copyright 1999-2024 Alibaba Group Holding Ltd.
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
|
|
15
|
+
from ... import opcodes
|
|
16
|
+
from ...utils import classproperty
|
|
17
|
+
from .core import DataFrameUnaryUfunc
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class DataFrameExp(DataFrameUnaryUfunc):
|
|
21
|
+
_op_type_ = opcodes.EXP
|
|
22
|
+
_func_name = "exp"
|
|
23
|
+
|
|
24
|
+
@classproperty
|
|
25
|
+
def tensor_op_type(self):
|
|
26
|
+
from ...tensor.arithmetic import TensorExp
|
|
27
|
+
|
|
28
|
+
return TensorExp
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Copyright 1999-2024 Alibaba Group Holding Ltd.
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
|
|
15
|
+
from ... import opcodes
|
|
16
|
+
from ...utils import classproperty
|
|
17
|
+
from .core import DataFrameUnaryUfunc
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class DataFrameExp2(DataFrameUnaryUfunc):
|
|
21
|
+
_op_type_ = opcodes.EXP2
|
|
22
|
+
_func_name = "exp2"
|
|
23
|
+
|
|
24
|
+
@classproperty
|
|
25
|
+
def tensor_op_type(self):
|
|
26
|
+
from ...tensor.arithmetic import TensorExp2
|
|
27
|
+
|
|
28
|
+
return TensorExp2
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Copyright 1999-2024 Alibaba Group Holding Ltd.
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
|
|
15
|
+
from ... import opcodes
|
|
16
|
+
from ...utils import classproperty
|
|
17
|
+
from .core import DataFrameUnaryUfunc
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class DataFrameExpm1(DataFrameUnaryUfunc):
|
|
21
|
+
_op_type_ = opcodes.EXPM1
|
|
22
|
+
_func_name = "expm1"
|
|
23
|
+
|
|
24
|
+
@classproperty
|
|
25
|
+
def tensor_op_type(self):
|
|
26
|
+
from ...tensor.arithmetic import TensorExpm1
|
|
27
|
+
|
|
28
|
+
return TensorExpm1
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Copyright 1999-2024 Alibaba Group Holding Ltd.
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
|
|
15
|
+
from ... import opcodes
|
|
16
|
+
from ...utils import classproperty
|
|
17
|
+
from .core import DataFrameUnaryUfunc
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class DataFrameFloor(DataFrameUnaryUfunc):
|
|
21
|
+
_op_type_ = opcodes.FLOOR
|
|
22
|
+
_func_name = "floor"
|
|
23
|
+
|
|
24
|
+
@classproperty
|
|
25
|
+
def tensor_op_type(self):
|
|
26
|
+
from ...tensor.arithmetic import TensorFloor
|
|
27
|
+
|
|
28
|
+
return TensorFloor
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# Copyright 1999-2024 Alibaba Group Holding Ltd.
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
|
|
15
|
+
import operator
|
|
16
|
+
|
|
17
|
+
from ... import opcodes
|
|
18
|
+
from ...utils import classproperty
|
|
19
|
+
from .core import DataFrameBinopUfunc
|
|
20
|
+
from .docstring import bin_arithmetic_doc
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
class DataFrameFloorDiv(DataFrameBinopUfunc):
|
|
24
|
+
_op_type_ = opcodes.FLOORDIV
|
|
25
|
+
|
|
26
|
+
_func_name = "floordiv"
|
|
27
|
+
_rfunc_name = "rfloordiv"
|
|
28
|
+
|
|
29
|
+
@classproperty
|
|
30
|
+
def _operator(self):
|
|
31
|
+
return operator.floordiv
|
|
32
|
+
|
|
33
|
+
@classproperty
|
|
34
|
+
def tensor_op_type(self):
|
|
35
|
+
from ...tensor.arithmetic import TensorFloorDiv
|
|
36
|
+
|
|
37
|
+
return TensorFloorDiv
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
_floordiv_example = """
|
|
41
|
+
>>> a.floordiv(b, fill_value=0).execute()
|
|
42
|
+
a 1.0
|
|
43
|
+
b NaN
|
|
44
|
+
c NaN
|
|
45
|
+
d 0.0
|
|
46
|
+
e NaN
|
|
47
|
+
dtype: float64
|
|
48
|
+
"""
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
@bin_arithmetic_doc("Integer division", equiv="//", series_example=_floordiv_example)
|
|
52
|
+
def floordiv(df, other, axis="columns", level=None, fill_value=None):
|
|
53
|
+
op = DataFrameFloorDiv(
|
|
54
|
+
axis=axis, level=level, fill_value=fill_value, lhs=df, rhs=other
|
|
55
|
+
)
|
|
56
|
+
return op(df, other)
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
@bin_arithmetic_doc("Integer division", equiv="//", series_example=_floordiv_example)
|
|
60
|
+
def rfloordiv(df, other, axis="columns", level=None, fill_value=None):
|
|
61
|
+
op = DataFrameFloorDiv(
|
|
62
|
+
axis=axis, level=level, fill_value=fill_value, lhs=other, rhs=df
|
|
63
|
+
)
|
|
64
|
+
return op.rcall(df, other)
|