在替换空值以使列为布尔值的过程中,我们在fireplace_count
列中找到空值。
如果fireplaceflag
的值为False
,则fireplace_count
null
的值应替换为0
df_train.loc[(df_train.fireplace_count.isnull()) & (df_train.fireplaceflag==False),'fireplace_count'] = 0
答案 0 :(得分:0)
我建议使用df.fillna()并将列名放在方法中以使其为目标,例如:
df['<column_name>']=df.<columnname>.fillna(<new_value>)
您可以将想要将空值更改为的新值放在括号中。您的情况是“ 0”。让我们简化一下问题,因为看起来None
值的条件是是否存在False
标志。
我将使用您较早发送给我的系列,但有一个小的改动。
import cudf
df = cudf.DataFrame({'basement_flag': [1, 1, 1, 0],
'basementsqft': [400,750,500,0],
'fireplace_count': [2, None, None, 1], #<-- added a None to illustrate the targeted nature of the solution
'fireplaceflag': [10, None, None, 8]})
print(df)
df['fireplace_count']=df.fireplace_count.fillna(0) #<-- This is the solution. It changes only the values in the column of interest, which is what you explained that you needed
print(df)
输出为:
basement_flag basementsqft fireplace_count fireplaceflag
0 1 400 2 10
1 1 750
2 1 500
3 0 0 1 8
basement_flag basementsqft fireplace_count fireplaceflag
0 1 400 2 10
1 1 750 0
2 1 500 0
3 0 0 1 8
让我知道这是否对您有用,或者您需要更多帮助!
答案 1 :(得分:0)
在fireplaceflag
列中的值为False
(即没有壁炉)的行中,将null
列中的fireplace_count
的值更改为{{1 }}
0
df_train.loc[(df_train.fireplace_count.isnull()) & (df_train.fireplaceflag==False),'fireplace_count'] = 0
答案 2 :(得分:0)
使用fillna
的公认答案适用于此特定示例,但从cuDF 0.9开始,答案中的通用版本不适用于标题中的问题。
cuDF现在支持__setitem__()
方法。
“在column_a
中的值为X
的行中,将column_b
中的值设置为Y
”,
最好使用以下内容:
import cudf
df = cudf.DataFrame({'basement_flag': [1, 1, 1, 0],
'basementsqft': [400,750,500,0],
'fireplace_count': [2, None, None, 1], #<-- added a None to illustrate the targeted nature of the solution
'fireplaceflag': [10, None, None, 8]})
print(df)
mask = df.fireplaceflag.isnull()
df.loc[mask, 'fireplace_count'] = 0
print(df)
basement_flag basementsqft fireplace_count fireplaceflag
0 1 400 2 10
1 1 750 null null
2 1 500 null null
3 0 0 1 8
basement_flag basementsqft fireplace_count fireplaceflag
0 1 400 2 10
1 1 750 0 null
2 1 500 0 null
3 0 0 1 8