首页 > 解决方案 > 替换 C 列中的值,其中 A 列中的值为 x

问题描述

问题

在将空值替换为布尔值的过程中,我们在列中找到空值fireplace_count

如果fireplaceflagvalue 是Falsevaluefireplace_count null应该替换为0

为熊猫而写

df_train.loc[(df_train.fireplace_count.isnull()) & (df_train.fireplaceflag==False),'fireplace_count'] = 0

标签: rapidscudf

解决方案


我建议使用 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

还有...

df['fireplace_count'] = df['fireplace_count'].fillna(0)
df['fireplaceflag']= df['fireplaceflag'].fillna(-1)
df['fireplaceflag'] = df['fireplaceflag'].masked_assign(1, df['fireplace_count'] > 0)

根据我认为您的问题,这应该适用于任何奇怪的情况(感谢 Roy F @ NVIDIA)

让我知道这是否适合您,或者您是否需要更多帮助!


推荐阅读