繁体   English   中英

根据列中的值从熊猫数据框中删除行

[英]Dropping rows from pandas dataframe based on value in column(s)

假设我有一个包含“A”列和“B”列的数据框,如何删除“A”列和“B”列相等但不在同一行中的行 我只想删除“B”列等于“A”列的行

例如,第 4、8 和 9 行的“B”列等于第 2、3 和 5 行的“A”列。 我想删除第 4、8 和 9 行

    Column A         Column B                                                 
1        10               62 
2        10               72
3        20               75
4        20               10
5        30               35
6        30               45               
7        40               55    
8        40               20
9        40               30

删除第 4、8 和 9 行,因为行中的 B 列等于第 2、3 和 5 行中的 A 列

预期输出

    Column A         Column B                                                 
1        10               62 
2        10               72
3        20               75

5        30               35
6        30               45               
7        40               55    
  

需要删除第 4、8、9 行

添加其他详细信息: A 列和 B 列在同一行中永远不会相等。 B 列中的多行可能在 A 列中具有匹配值。为了说明我已经扩展了数据框,如果我的原始行号不匹配,则很抱歉。 总结一下需求。

多行将有 B 列与 A 列匹配,期望删除任何行中 B 列与 A 列匹配的所有行。

重申 A 列和 B 列在同一行中不相等

此解决方案假设在column B满足条件时,也应删除column A中的唯一值。

我添加了第五行来测试不应删除同一行中的相等值的条件

   Column A  Column B
1        10        62
2        20        75
3        30        45
4        45        55
5        65        65

检查column B所有值,如果它们在column A使用isin但排除具有相等值的行。

df[~(df['Column B'].isin(df['Column A']) & (df['Column B'] != df['Column A']))]

出去:

   Column A  Column B
1        10        62
2        20        75
4        45        55
5        65        65
  • 根据其他详细信息进行了更新,并且输出与预期结果相匹配。
import pandas as pd

# sample
df = pd.DataFrame({'colA': [10, 10, 20, 20, 30, 30, 40, 40, 40], 'colB': [62, 72, 75, 10, 35, 45, 55, 20, 30]})

# display(df)
   colA  colB
0    10    62
1    10    72
2    20    75
3    20    10
4    30    35
5    30    45
6    40    55
7    40    20
8    40    30

df[~(df['colB'].isin(df['colA']) & (df['colB'] != df['colA']))]

[out]:
   colA  colB
0    10    62
1    10    72
2    20    75
4    30    35
5    30    45
6    40    55

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM