根据多个条件删除行;包括其他列条件
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(...)
.
我正在寻求根据需要在同一行中满足的两个条件从 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(...)
.