根据多个条件删除行;包括其他列条件

Delete rows based on multiple conditions; including other column conditionals

我正在寻求根据需要在同一行中满足的两个条件从 DataFrame 中删除一些行。所以我有 5 列,其中;如果两列具有相等的值(代码 1 和代码 2)并且另一列(计数)大于 1,则当这两个条件在同一行中得到满足时 - 该列将被删除。

我也可以保留满足以下条件的列:

count == 1 'OR' (as opposed to AND) df_1.code1 != df_1.code2

就第一个想法而言,我的想法是:

df_1 = '''drop row if''' [df_1.count == 1 & df_1.code1 == df_1.code2] 

这是我目前的第二个想法;

df_1 = df_1[df_1.count == 1 or df_1.code1 != df_1.code2] 

您可以使用.loc指定多个条件。

df_new = df_1.loc[(df_1.count != 1) & (df_1.code1 != df_1.code2), :]
df.drop(df[(df['code1'] == df['code2']) & (df['count'] > 1)].index, inplace=True)

分解为以下步骤:

df[(df['code1'] == df['code2']) & (df['count'] > 1)] returns df 中的行子集,其中 code1 中的值等于 code2 中的值,count 中的值是大于 1。

.index returns 这些行的索引。

最后一步是调用 df.drop() 期望从数据帧中删除索引,并使用 inplace=True 所以我们不需要重新分配,即 df = df.drop(...).