【问题标题】:Replace integers with np.NaN in cudf dataframe在 cudf 数据框中用 np.NaN 替换整数
【发布时间】:2022-08-06 17:33:37
【问题描述】:
我有一个这样的数据框
df_a = cudf.DataFrame()
df_a[\'key\'] = [0, 1, 2, 3, 4]
df_a[\'values\'] = [1,2,np.nan,3,np.nan]
我想用 np.nan 替换所有 2s
通常在我会使用的熊猫数据框中
df_a[df_a==2]=np.nan
但在 cudf 数据框中我得到无法广播 <class \'int\'>
当我使用
df_a[df_a[\'values\']==2] =np.nan我无法理解结果
使用
df_a.replace(2, np.NaN)
给我无法将浮点 NaN 转换为整数
原始数据框非常大,所以我想避免循环,它可能包含不同的数据类型,这意味着 \'2\'s 也可能是浮点数
标签:
python
pandas
dataframe
nan
cudf
【解决方案1】:
我找不到很好的参考,但使用 None 而不是 np.nan 似乎可以解决问题:
from cudf import DataFrame
from numpy import nan
df_a = DataFrame()
df_a['key'] = [0, 1, 2, 3, 4]
df_a['values'] = [1,2, nan,3,nan]
print(df_a)
# key values
# 0 0 1
# 1 1 2
# 2 2 <NA>
# 3 3 3
# 4 4 <NA>
# mask all 2's (in key and value)
mask = df_a==2
df_a[mask] = None
print(df_a)
# key values
# 0 0 1
# 1 1 <NA>
# 2 <NA> <NA>
# 3 3 3
# 4 4 <NA>