Pandas df:如果多个列中的字符计数不匹配,则将值替换为np.NaN

Pandas df:如果多个列中的字符计数不匹配,则将值替换为np.NaN,pandas,dataframe,Pandas,Dataframe,我希望在这个论坛上找到答案: 我有一个包含URL的多列df。我的索引列也是URL 目的:如果索引中“/”(count())的数量不等于其他各列值中“/”(count())的数量,我想用np.NaN替换所有列中的df值 E.x 首先,您需要与一列进行比较 counts = df['id_url'].str.count('/') 然后一次计算所有行 mask = df.str.count('/') == counts 然后我们要显示所有值相等的行 mask = mask.all(axi

我希望在这个论坛上找到答案:

  • 我有一个包含URL的多列df。我的索引列也是URL
  • 目的:如果索引中“/”(count())的数量不等于其他各列值中“/”(count())的数量,我想用np.NaN替换所有列中的df值
E.x


首先,您需要与一列进行比较

 counts = df['id_url'].str.count('/')
然后一次计算所有行

 mask = df.str.count('/') == counts
然后我们要显示所有值相等的行

 mask = mask.all(axis=1)
现在我们有了一个每个值都相等的掩码,我们可以使用not操作符来过滤那些至少有一列不相等的掩码

 df.loc[~mask, :] = np.nan # replaces every value in the row with np.nan

到目前为止你试过什么?堆栈溢出不是代码写入服务。Ok通过在df.columns:df.loc[df.index.str.count(“/”)=df[i].str.count(“/”),i]=np.NaN中使用:
找到了一种方法。无论如何,谢谢有一个更有效的方法来实现你想要的。检查下面的答案。