min() 函数不适用于日期类型的 koalas.DataFrame 列

min() function doesn't work on koalas.DataFrame columns of date types

我创建了以下数据框:

import pandas as pd
import databricks.koalas as ks
df = ks.DataFrame(
    {'Date1': pd.date_range('20211101', '20211110', freq='1D'), 
     'Date2': pd.date_range('20201101', '20201110', freq='1D')})
df

输出[0]:

Date1 Date2
0 2021-11-01 2020-11-01
1 2021-11-02 2020-11-02
2 2021-11-03 2020-11-03
3 2021-11-04 2020-11-04
4 2021-11-05 2020-11-05
5 2021-11-06 2020-11-06
6 2021-11-07 2020-11-07
7 2021-11-08 2020-11-08
8 2021-11-09 2020-11-09
9 2021-11-10 2020-11-10

当试图获得 Date1 的最小值时,我得到了正确的结果:

df.Date1.min()

输出[1]:

Timestamp('2021-11-01 00:00:00')

此外,当尝试获取每一行的最小值时,返回了正确的结果:

df.min(axis=1)

输出[2]:

0   2020-11-01
1   2020-11-02
2   2020-11-03
3   2020-11-04
4   2020-11-05
5   2020-11-06
6   2020-11-07
7   2020-11-08
8   2020-11-09
9   2020-11-10
dtype: datetime64[ns]

但是,在列上使用相同的函数会失败:

df.min(axis=0)

输出[3]:

Series([], dtype: float64)

有谁知道这是为什么以及是否有解决它的优雅方法?

试试这个:

df.apply(min, axis=0)

输出[1]:

Date1   2021-11-01
Date2   2020-11-01
dtype: datetime64[ns]

这确实是代码中的一个错误,但从那时起 Koalas 与 pyspark 合并,pandas on spark API 就诞生了。更多信息 here.

使用spark 3.2.0及以上版本,需要更换

import databricks.koalas as ks

import pyspark.pandas as ps

并将 ks.DataFrame 替换为 ps.DataFrame。这完全消除了问题。