【发布时间】:2021-06-21 13:42:43
【问题描述】:
我正在寻求有关如何简化代码的帮助。 DataFrame 的行数超过 100k,并且可以有多个列,其中包含字符串和整数的混合。这是一个例子df:
data = {
"Area_1": [0, 100, 200, 0],
"Area_2": [0, 0, 100, 100],
"Area_3": [0, 0, 0, 100],
"id": ["gene_x", "gene_y", "gene_z", "gene_i"],
}
df = pd.DataFrame(data, columns=["id", "Area_1", "Area_2", "Area_3"])
这是我认为可以简化大量有效但只能处理 3 列的代码的代码。如果所有列都包含整数 0,我现在想接受任意数量的列并过滤行。
预期输出: DataFrame 中的所有内容,但包含gene_x 的行。
当前代码:
cut=r'^Area'
blade = df.columns.str.contains(cut)
df[(df.loc[:,blade] > 0).any(axis=1)]
目前,此代码执行没有错误,但返回 df 没有按预期过滤。 我的期望是删除不包含值 >0
的任何行【问题讨论】:
-
您能否提供示例输入和预期输出?
-
用于示例数据框。它只会是 id = gene_x 的删除行。我提供了我的数据框的屏幕截图。此处将是不包含整数值> 0的中间行。还有40个其他列包含我想保留的字符串或其他值,但我只想将条件应用于包含“区域.. ...”。
-
示例数据框再次更新。
标签: python pandas dataframe contains pandas-loc