如果 5 列中有 3 列低于特定值,则删除行
drop row if 3 out of 5 columns are lower than a specific value
我正在尝试编写一行代码,如果 5 列中的 3 列的 pvalue(列)低于 1.3,我会在数据框中删除一行。如果 pvalue 在 5 列中的 3 列中大于 1.3,我将保留该行。代码如下所示:
for i in np.arange(pvalue.shape[0]):
if (pvalue.iloc[i,1:] < 1.3).count() > 2:
pvalue.drop(index = pvalue.index[i], axis = 0, inplace = True)
else:
None
pvalue 数据框有 6 列,第一列是字符串,接下来的 5 列是实验的 pvalues。我收到此错误:
IndexError: single positional indexer is out-of-bounds
我不知道如何解决这个问题。我感谢每一个帮助。顺便说一句,我是一个完整的 python 初学者,所以请耐心等待! :) 感谢并期待您的解决方案!
我对 Pandas 不是很了解,所以可能有更好的方法来解决这个问题,但这应该可行:
通过使用 iterrows(),您可以遍历 DataFrame 的每一行。
for idx, row in pvalue.iterrows():
在循环中,您将有权访问 idx
变量,它是您当前正在迭代的行的索引,并且行值本身在 row
变量中。
然后对于每一行,您可以使用简单的 for
循环遍历每一列的值。
for val in row[1:]:
同时确保从第二个值开始(或者换句话说,忽略索引 0
并从索引 1
开始)。
剩下的就很简单了。
threshold = 1.3
for idx, row in pvalue.iterrows():
count = 0
for val in row[1:]:
if val < threshold:
count += 1
if count > 2:
pvalue.drop(idx, inplace=True)
我正在尝试编写一行代码,如果 5 列中的 3 列的 pvalue(列)低于 1.3,我会在数据框中删除一行。如果 pvalue 在 5 列中的 3 列中大于 1.3,我将保留该行。代码如下所示:
for i in np.arange(pvalue.shape[0]):
if (pvalue.iloc[i,1:] < 1.3).count() > 2:
pvalue.drop(index = pvalue.index[i], axis = 0, inplace = True)
else:
None
pvalue 数据框有 6 列,第一列是字符串,接下来的 5 列是实验的 pvalues。我收到此错误:
IndexError: single positional indexer is out-of-bounds
我不知道如何解决这个问题。我感谢每一个帮助。顺便说一句,我是一个完整的 python 初学者,所以请耐心等待! :) 感谢并期待您的解决方案!
我对 Pandas 不是很了解,所以可能有更好的方法来解决这个问题,但这应该可行:
通过使用 iterrows(),您可以遍历 DataFrame 的每一行。
for idx, row in pvalue.iterrows():
在循环中,您将有权访问 idx
变量,它是您当前正在迭代的行的索引,并且行值本身在 row
变量中。
然后对于每一行,您可以使用简单的 for
循环遍历每一列的值。
for val in row[1:]:
同时确保从第二个值开始(或者换句话说,忽略索引 0
并从索引 1
开始)。
剩下的就很简单了。
threshold = 1.3
for idx, row in pvalue.iterrows():
count = 0
for val in row[1:]:
if val < threshold:
count += 1
if count > 2:
pvalue.drop(idx, inplace=True)