如果 pandas 数据框中的两个单独的单元格不包含文本,是否删除整行?

If two seperate cells in a pandas dataframe doesn't contain a text, drop the entire row?

Pandas Dataframe 假设示例:

'A' 'B' 'C'
A+1 B+1  1
A+2 B+1  2
A+3 B+1  3

假设我只想保留第 'A' 列包含“1”且第 'B' 列包含“1”的行,不满足此条件的任何其他行都会被删除。

因此输出数据帧如下所示:

'A' 'B' 'C'
A+1 B+1  1

我的尝试是遍历 A 列和 B 列中的每一行:

for i,j in df.iterrows():
    if "1" in (df['A']) & (df['B']):
        print()
    else:
        df.drop()

但我得到了这个错误:

TypeError: unsupported operand type(s) for &: 'str' and 'str'

还有其他方法吗?

您可以对 AB 列使用 Series.str.contains,为每个列 return 一个掩码,如果该列中的项目包含1,否则为假。然后使用 & 将它们连接在一起(即 return 一个新掩码,其中如果其他掩码中的两个项目都为真,则每个项目为真,否则为假),并使用结果索引数据帧:

subset = df[df['A'].str.contains('1') & df['B'].str.contains('1')]

输出:

>>> subset
     A    B  C
0  A+1  B+1  1