熊猫:删除其中一列的值出现在另一列中的任何行的行

时间:2018-09-06 21:52:18

标签: python pandas

示例数据为:

000000008,2, 1,000000010
000000009,1, 1,000000011
000000010,1, 1,000000008
000000011,2, 1,000000032
000000012,3, 1,000000009
000000013,2, 1,000000108

您可以看到第一列中的某些值也出现在第四列中。我要删除这些行,其中第四列中的值也会出现在第一列中的任何行上。

因此,在此示例中,应删除以下行:

000000008,2, 1,000000010
000000010,1, 1,000000008
000000012,3, 1,000000009
000000009,1, 1,000000011

代码起点:

import numpy as np
import pandas as pd

T = u'''000000008,2, 1,000000010
    000000009,1, 1,000000011
    000000010,1, 1,000000008
    000000011,2, 1,000000032
    000000012,3, 1,000000009
    000000013,2, 1,000000108'''

from io import StringIO
df = pd.read_csv(StringIO(T), header=None)
print(df)

1 个答案:

答案 0 :(得分:2)

IIUC,根据您的描述,您可以执行以下操作:

df[~df.iloc[:,3].isin(df.iloc[:,0])]

哪个返回:

    0  1  2    3
3  11  2  1   32
5  13  2  1  108

与所需的输出相反,这将删除带有000000011的行,而不是带有000000108的行,因为在两列中都找到了000000011,但是000000108被删除了不是