熊猫:删除一行的值出现在另一行的任何行上的行

问题描述 投票:0回答:1

示例数据是:

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)
python pandas
1个回答
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不是

© www.soinside.com 2019 - 2024. All rights reserved.