如何基于Pvalue和Qvalue修改DataFrame的AVG Log2 Ratio列值?
问题解决方法
错误根源
- 直接用
if判断DataFrame切片的真假,pandas无法明确你要判断的逻辑(是所有元素满足、任意元素满足还是是否为空),因此抛出ValueError。 - 赋值时
loc的用法错误:你写的df_PCC7942.loc[df_PCC7942['AVG Log2 Ratio']]是把列值当作索引使用,完全不符合需求。
正确实现代码
不需要if判断,直接通过loc同时定位满足条件的行和目标列,一次性完成赋值:
# 筛选Pvalue>0.05 或 Qvalue>0.05的行,将这些行的'AVG Log2 Ratio'设为'Blank' df_PCC7942.loc[(df_PCC7942['Pvalue'] > 0.05) | (df_PCC7942['Qvalue'] > 0.05), 'AVG Log2 Ratio'] = 'Blank'
验证修改结果
如果需要确认修改是否正确执行,可以用以下代码查看被修改的行:
print(df_PCC7942[(df_PCC7942['Pvalue'] > 0.05) | (df_PCC7942['Qvalue'] > 0.05)])
内容的提问来源于stack exchange,提问作者raphajo11
相关产品推荐
相关产品推荐

