Repository: modin-project/modin

Issue:
cummax/cummin throw exception on mixed int/float type dataframes
### System information
- **OS Platform and Distribution (e.g., Linux Ubuntu 16.04)**:

Ubuntu 19.10

- **Modin version** (`modin.__version__`):

0.7.3+42.gc78828e.dirty

- **Python version**:

Python 3.7.5

- **Code we can use to reproduce**:

```python
import modin.pandas as pd

data={'col1': [1, 2], 'col2': [3.3, 4.4]}
df = pd.DataFrame(data)
df1 = df.cummax(axis=1)
print(df1)
```

<!--
You can obtain the Modin version with

python -c "import modin; print(modin.__version__)"
-->

### Describe the problem
<!-- Describe the problem clearly here. -->

Pandas allows comparing ints with floats while Modin throws a TypeException.

### Source code / logs
<!-- Include any logs or source code that would be helpful to diagnose the problem. If including tracebacks, please include the full traceback. Large logs and files should be attached. Try to provide a reproducible test case that is the bare minimum necessary to generate the problem. -->



Discussion:
The same problem exists for `cummin`.

Resolving patch:
diff --git a/modin/pandas/base.py b/modin/pandas/base.py
--- a/modin/pandas/base.py
+++ b/modin/pandas/base.py
@@ -760,8 +760,8 @@ def cummax(self, axis=None, skipna=True, *args, **kwargs):
             The cumulative maximum of the DataFrame.
         """
         axis = self._get_axis_number(axis) if axis is not None else 0
-        if axis:
-            self._validate_dtypes()
+        if axis == 1:
+            self._validate_dtypes(numeric_only=True)
         return self.__constructor__(
             query_compiler=self._query_compiler.cummax(
                 axis=axis, skipna=skipna, **kwargs
@@ -779,8 +779,8 @@ def cummin(self, axis=None, skipna=True, *args, **kwargs):
             The cumulative minimum of the DataFrame.
         """
         axis = self._get_axis_number(axis) if axis is not None else 0
-        if axis:
-            self._validate_dtypes()
+        if axis == 1:
+            self._validate_dtypes(numeric_only=True)
         return self.__constructor__(
             query_compiler=self._query_compiler.cummin(
                 axis=axis, skipna=skipna, **kwargs


Test patch:
diff --git a/modin/pandas/test/test_dataframe.py b/modin/pandas/test/test_dataframe.py
--- a/modin/pandas/test/test_dataframe.py
+++ b/modin/pandas/test/test_dataframe.py
@@ -3552,6 +3552,13 @@ def test_cummax(self, request, data, axis, skipna):
             modin_result = modin_df.T.cummax(axis=axis, skipna=skipna)
             df_equals(modin_result, pandas_result)
 
+    @pytest.mark.parametrize("axis", axis_values, ids=axis_keys)
+    def test_cummax_int_and_float(self, axis):
+        data = {"col1": list(range(1000)), "col2": [i * 0.1 for i in range(1000)]}
+        modin_df = pd.DataFrame(data)
+        pandas_df = pandas.DataFrame(data)
+        df_equals(modin_df.cummax(axis=axis), pandas_df.cummax(axis=axis))
+
     @pytest.mark.parametrize("data", test_data_values, ids=test_data_keys)
     @pytest.mark.parametrize("axis", axis_values, ids=axis_keys)
     @pytest.mark.parametrize(
@@ -3579,6 +3586,13 @@ def test_cummin(self, request, data, axis, skipna):
             modin_result = modin_df.T.cummin(axis=axis, skipna=skipna)
             df_equals(modin_result, pandas_result)
 
+    @pytest.mark.parametrize("axis", axis_values, ids=axis_keys)
+    def test_cummin_int_and_float(self, axis):
+        data = {"col1": list(range(1000)), "col2": [i * 0.1 for i in range(1000)]}
+        modin_df = pd.DataFrame(data)
+        pandas_df = pandas.DataFrame(data)
+        df_equals(modin_df.cummin(axis=axis), pandas_df.cummin(axis=axis))
+
     @pytest.mark.parametrize("data", test_data_values, ids=test_data_keys)
     @pytest.mark.parametrize("axis", axis_values, ids=axis_keys)
     @pytest.mark.parametrize(