Pandas 兼容性注意事项#

Pandas 兼容性注意事项

pandas.DataFrame.diff()

Diff 目前仅支持数值数据类型的列。

[源]

Pandas 兼容性注意事项

pandas.DataFrame.from_arrow

此方法在 pandas 中不存在,但其工作方式类似于 pyarrow.Table.to_pandas() 对 PyArrow 表的作用,即它不支持自动设置索引列。

[源]

Pandas 兼容性注意事项

pandas.DataFrame.ewm()

参数 min_periods, ignore_na, axis, 和 times 尚不支持。其行为仅对以有效(非空)元素开头的数据定义。

目前,仅支持 mean 方法。

[源]

Pandas 兼容性注意事项

pandas.DataFrame.empty, pandas.Series.empty

如果 DataFrame/Series 仅包含 null 值,它仍然不被认为是空的。请参阅上面的示例。

[源]

Pandas 兼容性注意事项

pandas.DataFrame.eval()

  • 不支持额外的 kwargs 参数。

  • 位运算符和逻辑运算符不依赖于数据类型。特别是,对整数进行位运算必须使用 &,而不是 and,后者专门用于布尔值之间的逻辑 and 运算。

  • 目前仅支持数值类型。

  • 运算符通常不会自动进行类型转换。用户负责在评估函数之前将列转换为合适的类型。

  • 不支持对同一名称进行多次赋值(即一系列赋值语句,其中后面的语句取决于前面语句的输出)。

[源]

Pandas 兼容性注意事项

pandas.DataFrame.agg()

  • 不支持:axis, *args, **kwargs

[源]

Pandas 兼容性注意事项

pandas.DataFrame.count()

目前不支持的参数是 axisnumeric_only

[源]

Pandas 兼容性注意事项

pandas.DataFrame.any(), pandas.Series.any()

目前不支持的参数是 axis, bool_only, level

[源]

Pandas 兼容性注意事项

pandas.DataFrame.transpose(), pandas.DataFrame.T

不支持 copy 参数,因为默认且唯一行为是 copy=True

[源]

Pandas 兼容性注意事项

pandas.DataFrame.all(), pandas.Series.all()

目前不支持的参数是 axis, bool_only, level

[源]

Pandas 兼容性注意事项

pandas.DatetimeIndex.strftime()

尚不支持以下日期格式标识符:%c, %x,%X

[源]

Pandas 兼容性注意事项

pandas.core.groupby.DataFrameGroupBy.idxmin(),

pandas.core.groupby.SeriesGroupBy.idxmin()

numeric_only, min_count 参数

[源]

Pandas 兼容性注意事项

pandas.core.groupby.DataFrameGroupBy.first(),

pandas.core.groupby.SeriesGroupBy.first()

numeric_only, min_count 参数

[源]

Pandas 兼容性注意事项

pandas.core.groupby.DataFrameGroupBy.max(),

pandas.core.groupby.SeriesGroupBy.max()

numeric_only, min_count 参数

[源]

Pandas 兼容性注意事项

pandas.core.groupby.DataFrameGroupBy.shift(),

pandas.core.groupby.SeriesGroupBy.shift()

不支持 freq 参数。

[源]

Pandas 兼容性注意事项

pandas.core.groupby.DataFrameGroupBy.min(),

pandas.core.groupby.SeriesGroupBy.min()

numeric_only, min_count 参数

[源]

Pandas 兼容性注意事项

pandas.core.groupby.DataFrameGroupBy.prod(),

pandas.core.groupby.SeriesGroupBy.prod()

numeric_only, min_count 参数

[源]

Pandas 兼容性注意事项

pandas.core.groupby.DataFrameGroupBy.last(),

pandas.core.groupby.SeriesGroupBy.last()

numeric_only, min_count 参数

[源]

Pandas 兼容性注意事项

pandas.core.groupby.DataFrameGroupBy.idxmax(),

pandas.core.groupby.SeriesGroupBy.idxmax()

numeric_only, min_count 参数

[源]

Pandas 兼容性注意事项

pandas.core.groupby.DataFrameGroupBy.median(),

pandas.core.groupby.SeriesGroupBy.median()

numeric_only, min_count 参数

[源]

Pandas 兼容性注意事项

pandas.core.groupby.DataFrameGroupBy.mean(),

pandas.core.groupby.SeriesGroupBy.mean()

numeric_only, min_count 参数

[源]

Pandas 兼容性注意事项

pandas.core.groupby.DataFrameGroupBy.sum(),

pandas.core.groupby.SeriesGroupBy.sum()

numeric_only, min_count 参数

[源]

Pandas 兼容性注意事项

pandas.DataFrame.merge()

cuDF 中的 DataFrame 合并会导致非确定性的行顺序。

[源]

Pandas 兼容性注意事项

pandas.to_numeric()

与 pandas 的一个重要区别在于,此函数不接受数值/非数值混合类型的序列。例如 [1, 'a']。当收到此类输入时,无论 errors 参数为何值,都会引发 TypeError

[源]

Pandas 兼容性注意事项

pandas.core.groupby.DataFrameGroupBy.apply(),

pandas.core.groupby.SeriesGroupBy.apply()

与 pandas 相比,cuDF 的 groupby.apply 功能有限。在某些情况下,pandas 会将分组键作为索引的一部分返回,而 cudf 由于冗余性不会这样做。例如

>>> import pandas as pd
>>> df = pd.DataFrame({
...     'a': [1, 1, 2, 2],
...     'b': [1, 2, 1, 2],
...     'c': [1, 2, 3, 4],
... })
>>> gdf = cudf.from_pandas(df)
>>> df.groupby('a')[["b", "c"]].apply(lambda x: x.iloc[[0]])
     b  c
a
1 0  1  1
2 2  1  3
>>> gdf.groupby('a')[["b", "c"]].apply(lambda x: x.iloc[[0]])
   b  c
0  1  1
2  1  3

[源]

Pandas 兼容性注意事项

pandas.core.groupby.DataFrameGroupBy.shift(),

pandas.core.groupby.SeriesGroupBy.shift()

不支持 freq 参数。

[源]

Pandas 兼容性注意事项

pandas.core.groupby.DataFrameGroupBy.idxmax(),

pandas.core.groupby.SeriesGroupBy.idxmax()

numeric_only, min_count 参数

[源]

Pandas 兼容性注意事项

pandas.core.groupby.DataFrameGroupBy.idxmin(),

pandas.core.groupby.SeriesGroupBy.idxmin()

numeric_only, min_count 参数

[源]

Pandas 兼容性注意事项

pandas.Series.str.replace()

参数 caseflags 尚不支持,如果设置了除默认值以外的任何值,则会引发 NotImplementedError

[源]

Pandas 兼容性注意事项

pandas.Series.str.match()

目前不支持参数 casenaflags 参数目前仅支持 re.DOTALL 和 re.MULTILINE。

[源]

Pandas 兼容性注意事项

pandas.Series.str.partition()

参数 expand 尚不支持,如果设置了除默认值以外的任何值,则会引发 NotImplementedError

[源]

Pandas 兼容性注意事项

pandas.Series.list.sort_values

此方法在 pandas 中不存在,但可以通过以下方式运行

>>> import pandas as pd
>>> s = pd.Series([[3, 2, 1], [2, 4, 3]])
>>> print(s.apply(sorted))
0    [1, 2, 3]
1    [2, 3, 4]
dtype: object

[源]

Pandas 兼容性注意事项

pandas.Series.str.contains()

参数 casena 尚不支持,如果设置了除默认值以外的任何值,则会引发 NotImplementedError。flags 参数目前仅支持 re.DOTALL 和 re.MULTILINE。

[源]

Pandas 兼容性注意事项

pandas.Series.str.endswith()

尚不支持 na 参数,因为 cudf 使用原生字符串而非 Python 对象。

[源]

Pandas 兼容性注意事项

pandas.Series.str.findall()

flags 参数目前仅支持 re.DOTALL 和 re.MULTILINE。

[源]

Pandas 兼容性注意事项

pandas.Series.str.count()

  • flags 参数目前仅支持 re.DOTALL 和 re.MULTILINE。

  • 在传入 pat 时需要转义一些字符。例如,'$' 在正则表达式中具有特殊含义,在查找此字面字符时必须进行转义。

[源]

Pandas 兼容性注意事项

pandas.Series.str.extract()

flags 参数目前仅支持 re.DOTALL 和 re.MULTILINE。

[源]

Pandas 兼容性注意事项

pandas.DataFrame.where(), pandas.Series.where()

请注意,where 将缺失值视为假值,与 pandas 处理可为空数据的方式一致

>>> gsr = cudf.Series([1, 2, 3])
>>> gsr.where([True, False, cudf.NA])
0       1
1    <NA>
2    <NA>
dtype: int64
>>> gsr.where([True, False, False])
0       1
1    <NA>
2    <NA>
dtype: int64

[源]

Pandas 兼容性注意事项

pandas.DataFrame.truncate(), pandas.Series.truncate()

copy 参数仅用于 API 兼容性,但不支持 copy=False。此方法始终会生成一个副本。

[源]

Pandas 兼容性注意事项

pandas.DataFrame.replace(), pandas.Series.replace()

目前不支持的参数有:limit, regex, method

[源]

Pandas 兼容性注意事项

pandas.DataFrame.resample(), pandas.Series.resample()

请注意,结果中索引(或使用 ‘on=’ 时的 ‘on’ 列)的数据类型将是与重采样频率最接近的频率。例如,如果从纳秒重采样到毫秒,则索引的数据类型将是 ‘datetime64[ms]’。

[源]

Pandas 兼容性注意事项

pandas.DataFrame.sample(), pandas.Series.sample()

当从 axis=0/'index' 进行采样时,random_state 可以是 numpy 随机状态 (numpy.random.RandomState) 或 cupy 随机状态 (cupy.random.RandomState)。当使用 numpy 随机状态时,输出保证与相应的 pandas 方法调用输出一致,但生成样本可能会很慢。如果不需要严格等同于 pandas,使用 cupy 随机状态将获得更好的性能,尤其是在采样大量项目时。建议对 weights 数组使用与 random state 相匹配的 ndarray 类型。

[源]

Pandas 兼容性注意事项

pandas.DataFrame.sort_index(), pandas.Series.sort_index()

  • 不支持:kind, sort_remaining=False

[源]

Pandas 兼容性注意事项

pandas.DataFrame.skew(), pandas.Series.skew()

axis 参数目前不支持。

[源]

Pandas 兼容性注意事项

pandas.Series.sort_values()

  • 仅支持 axis=’index’。

  • 目前不支持 inplace 和 kind 参数

[源]

Pandas 兼容性注意事项

pandas.Series.reindex()

注意:与 Pandas 的一个区别是,NA 用于不匹配的行,而不是 NaN。这带来的一个副作用是,在 cuDF 中 Series 保留了整数数据类型,而在 Pandas 中则会被转换为浮点数。

[源]

Pandas 兼容性注意事项

pandas.DataFrame.min(), pandas.Series.min()

目前不支持的参数是 level, numeric_only

[源]

Pandas 兼容性注意事项

pandas.Series.rename()

  • 仅支持标量值来更改 name 属性

[源]

Pandas 兼容性注意事项

pandas.DataFrame.max(), pandas.Series.max()

目前不支持的参数是 level, numeric_only

[源]

Pandas 兼容性注意事项

pandas.Series.map()

请注意 map 目前仅支持定宽数值类型函数。

[源]

Pandas 兼容性注意事项

pandas.Series.count()

目前不支持的参数是 level

[源]

Pandas 兼容性注意事项

pandas.DataFrame.ewm()

参数 min_periods, ignore_na, axis, 和 times 尚不支持。其行为仅对以有效(非空)元素开头的数据定义。

目前,仅支持 mean 方法。

[源]

Pandas 兼容性注意事项

pandas.DataFrame.empty, pandas.Series.empty

如果 DataFrame/Series 仅包含 null 值,它仍然不被认为是空的。请参阅上面的示例。

[源]

Pandas 兼容性注意事项

pandas.Series.cov()

min_periods 参数尚不支持。

[源]

Pandas 兼容性注意事项

pandas.DataFrame.where(), pandas.Series.where()

请注意,where 将缺失值视为假值,与 pandas 处理可为空数据的方式一致

>>> gsr = cudf.Series([1, 2, 3])
>>> gsr.where([True, False, cudf.NA])
0       1
1    <NA>
2    <NA>
dtype: int64
>>> gsr.where([True, False, False])
0       1
1    <NA>
2    <NA>
dtype: int64

[源]

Pandas 兼容性注意事项

pandas.DataFrame.min(), pandas.Series.min()

目前不支持的参数是 level, numeric_only

[源]

Pandas 兼容性注意事项

pandas.DataFrame.any(), pandas.Series.any()

目前不支持的参数是 axis, bool_only, level

[源]

Pandas 兼容性注意事项

pandas.DataFrame.all(), pandas.Series.all()

目前不支持的参数是 axis, bool_only, level

[源]

Pandas 兼容性注意事项

pandas.DataFrame.max(), pandas.Series.max()

目前不支持的参数是 level, numeric_only

[源]

Pandas 兼容性注意事项

pandas.DataFrame.where(), pandas.Series.where()

请注意,where 将缺失值视为假值,与 pandas 处理可为空数据的方式一致

>>> gsr = cudf.Series([1, 2, 3])
>>> gsr.where([True, False, cudf.NA])
0       1
1    <NA>
2    <NA>
dtype: int64
>>> gsr.where([True, False, False])
0       1
1    <NA>
2    <NA>
dtype: int64

[源]

Pandas 兼容性注意事项

pandas.DataFrame.any(), pandas.Series.any()

目前不支持的参数是 axis, bool_only, level

[源]

Pandas 兼容性注意事项

pandas.DataFrame.all(), pandas.Series.all()

目前不支持的参数是 axis, bool_only, level

[源]

Pandas 兼容性注意事项

pandas.DataFrame.skew(), pandas.Series.skew()

axis 参数目前不支持。

[源]

Pandas 兼容性注意事项

pandas.DataFrame.transpose(), pandas.DataFrame.T

不支持 copy 参数,因为默认且唯一行为是 copy=True

[源]

Pandas 兼容性注意事项

pandas.DataFrame.sort_values(), pandas.Series.sort_values()

  • 仅支持 axis=’index’。

  • 不支持:inplace, kind

[源]

Pandas 兼容性注意事项

pandas.DataFrame.sort_index(), pandas.Series.sort_index()

  • 不支持:kind, sort_remaining=False

[源]

Pandas 兼容性注意事项

pandas.DataFrame.truncate(), pandas.Series.truncate()

copy 参数仅用于 API 兼容性,但不支持 copy=False。此方法始终会生成一个副本。

[源]

Pandas 兼容性注意事项

pandas.DataFrame.query()

与 pandas 的一个区别是,query 目前仅支持 numeric, datetime, timedelta, 或 bool 数据类型。

[源]

Pandas 兼容性注意事项

pandas.DataFrame.reindex()

注意:与 Pandas 的一个区别是,NA 用于不匹配的行,而不是 NaN。这带来的一个副作用是,在 cuDF 中 http_status 列保留了整数数据类型,而在 Pandas 中则会被转换为浮点数。

[源]

Pandas 兼容性注意事项

pandas.DataFrame.rename()

  • 不支持:level

Rename 不会覆盖列名。如果传递的列表包含重复项,列名将附加一个数字后缀。

[源]

Pandas 兼容性注意事项

pandas.DataFrame.replace(), pandas.Series.replace()

目前不支持的参数有:limit, regex, method

[源]

Pandas 兼容性注意事项

pandas.DataFrame.quantile()

与 Pandas 的一个显著区别是,当 DataFrame 为非数值类型且在 Pandas 中结果应为 Series 时。cuDF 将返回一个 DataFrame,因为它不支持 Series 中的混合类型。

[源]

Pandas 兼容性注意事项

pandas.DataFrame.resample(), pandas.Series.resample()

请注意,结果中索引(或使用 ‘on=’ 时的 ‘on’ 列)的数据类型将是与重采样频率最接近的频率。例如,如果从纳秒重采样到毫秒,则索引的数据类型将是 ‘datetime64[ms]’。

[源]

Pandas 兼容性注意事项

pandas.DataFrame.sample(), pandas.Series.sample()

当从 axis=0/'index' 进行采样时,random_state 可以是 numpy 随机状态 (numpy.random.RandomState) 或 cupy 随机状态 (cupy.random.RandomState)。当使用 numpy 随机状态时,输出保证与相应的 pandas 方法调用输出一致,但生成样本可能会很慢。如果不需要严格等同于 pandas,使用 cupy 随机状态将获得更好的性能,尤其是在采样大量项目时。建议对 weights 数组使用与 random state 相匹配的 ndarray 类型。

[源]

Pandas 兼容性注意事项

pandas.DataFrame.min(), pandas.Series.min()

目前不支持的参数是 level, numeric_only

[源]

Pandas 兼容性注意事项

pandas.DataFrame.merge()

cuDF 中的 DataFrame 合并会导致非确定性的行顺序。

[源]

Pandas 兼容性注意事项

pandas.DataFrame.interleave_columns

此方法在 pandas 中不存在,但可以通过 pd.Series(np.vstack(df.to_numpy()).reshape((-1,))) 运行。

[源]

Pandas 兼容性注意事项

pandas.DataFrame.transpose()

axis 参数目前不支持。

[源]

Pandas 兼容性注意事项

pandas.DataFrame.max(), pandas.Series.max()

目前不支持的参数是 level, numeric_only

[源]

Pandas 兼容性注意事项

pandas.DataFrame.nsmallest()

  • columns 中仅支持单个列

[源]

Pandas 兼容性注意事项

pandas.DataFrame.nlargest()

  • columns 中仅支持单个列

[源]

Pandas 兼容性注意事项

pandas.DataFrame.join()

  • 目前 other 必须是一个单独的 DataFrame。

  • 由于缺乏多级索引支持,on 尚不支持。

[源]