假设我有一个包含两列a和B的pandas数据框。我想修改这个数据框(或创建一个副本),以便每当a为0时,B总是NaN。我将如何实现这一点
我尝试了以下方法
df['A'==0]['B']=np.nan
及
df['A'==0]['B'].values.fill(np.nan)
没有成功
使用.loc进行基于标签的索引:
df.loc[df.A==0,'B']=np.nan
df.A==0表达式创建一个对行进行索引的布尔序列,'B'选择列。您还可以使用此选项转换列的子集,例如:
df.loc[df.A==0,'B']=df.loc[df.A==0,'B']/2
我对pandas的内部结构了解不够,无法确切地知道为什么这样做,但基本问题是,有时索引到数据帧会返回结果的副本,有时会返回原始对象的视图。根据这里的文档,这种行为取决于基本的numpy行为。我发现在一个操作(而不是[1][2])中访问所有内容更有可能用于设置