Pandas 兼容性注意事项#
Pandas 兼容性注意事项
pandas.DataFrame.from_arrow
此方法在 pandas 中不存在,但其工作方式类似于 pyarrow.Table.to_pandas()
对 PyArrow 表的作用,即它不支持自动设置索引列。
Pandas 兼容性注意事项
参数 min_periods
, ignore_na
, axis
, 和 times
尚不支持。其行为仅对以有效(非空)元素开头的数据定义。
目前,仅支持 mean
方法。
Pandas 兼容性注意事项
pandas.DataFrame.empty
, pandas.Series.empty
如果 DataFrame/Series 仅包含 null 值,它仍然不被认为是空的。请参阅上面的示例。
Pandas 兼容性注意事项
不支持额外的 kwargs 参数。
位运算符和逻辑运算符不依赖于数据类型。特别是,对整数进行位运算必须使用 &,而不是 and,后者专门用于布尔值之间的逻辑 and 运算。
目前仅支持数值类型。
运算符通常不会自动进行类型转换。用户负责在评估函数之前将列转换为合适的类型。
不支持对同一名称进行多次赋值(即一系列赋值语句,其中后面的语句取决于前面语句的输出)。
Pandas 兼容性注意事项
numeric_only, min_count 参数
Pandas 兼容性注意事项
numeric_only, min_count 参数
Pandas 兼容性注意事项
numeric_only, min_count 参数
Pandas 兼容性注意事项
不支持 freq
参数。
Pandas 兼容性注意事项
numeric_only, min_count 参数
Pandas 兼容性注意事项
numeric_only, min_count 参数
Pandas 兼容性注意事项
numeric_only, min_count 参数
Pandas 兼容性注意事项
numeric_only, min_count 参数
Pandas 兼容性注意事项
numeric_only, min_count 参数
Pandas 兼容性注意事项
numeric_only, min_count 参数
Pandas 兼容性注意事项
numeric_only, min_count 参数
Pandas 兼容性注意事项
与 pandas 的一个重要区别在于,此函数不接受数值/非数值混合类型的序列。例如 [1, 'a']
。当收到此类输入时,无论 errors
参数为何值,都会引发 TypeError
。
Pandas 兼容性注意事项
与 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 兼容性注意事项
不支持 freq
参数。
Pandas 兼容性注意事项
numeric_only, min_count 参数
Pandas 兼容性注意事项
numeric_only, min_count 参数
Pandas 兼容性注意事项
参数 case 和 flags 尚不支持,如果设置了除默认值以外的任何值,则会引发 NotImplementedError。
Pandas 兼容性注意事项
参数 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 兼容性注意事项
参数 case 和 na 尚不支持,如果设置了除默认值以外的任何值,则会引发 NotImplementedError。flags 参数目前仅支持 re.DOTALL 和 re.MULTILINE。
Pandas 兼容性注意事项
flags 参数目前仅支持 re.DOTALL 和 re.MULTILINE。
在传入 pat 时需要转义一些字符。例如,
'$'
在正则表达式中具有特殊含义,在查找此字面字符时必须进行转义。
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.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 的一个区别是,NA
用于不匹配的行,而不是 NaN
。这带来的一个副作用是,在 cuDF 中 Series 保留了整数数据类型,而在 Pandas 中则会被转换为浮点数。
Pandas 兼容性注意事项
参数 min_periods
, ignore_na
, axis
, 和 times
尚不支持。其行为仅对以有效(非空)元素开头的数据定义。
目前,仅支持 mean
方法。
Pandas 兼容性注意事项
pandas.DataFrame.empty
, pandas.Series.empty
如果 DataFrame/Series 仅包含 null 值,它仍然不被认为是空的。请参阅上面的示例。
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.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.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 的一个区别是,query
目前仅支持 numeric, datetime, timedelta, 或 bool 数据类型。
Pandas 兼容性注意事项
注意:与 Pandas 的一个区别是,NA
用于不匹配的行,而不是 NaN
。这带来的一个副作用是,在 cuDF 中 http_status
列保留了整数数据类型,而在 Pandas 中则会被转换为浮点数。
Pandas 兼容性注意事项
与 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.interleave_columns
此方法在 pandas 中不存在,但可以通过 pd.Series(np.vstack(df.to_numpy()).reshape((-1,)))
运行。