如何检查一列中的值是否可以包含多于另一列中的值

How to check if a value in one column can contain more than value in another column

我有以下数据框:

df = pd.DataFrame()
df['id'] = [1, 1, 2, 2]
df['col1'] = [10, 10, 20, 20]
df['col2'] = [100, 200, 50, 50]
df['col3'] = [1, 2, 3, 4]

目标

从这个数据框中,我想要 return 数据框的一部分,其中 col1 中的值可以有 多个值col2 中针对特定的 ID。在这种情况下,id '1' 在 col1 中的值为 10,在 col2 中的值为 100。由于 id '1' 在第二行的 col1 中的值为 10,因此 col2 中的值也应为 100。这个 id 不是这种情况,但是,ID '2' 是这种情况。它应该双向工作,所以 col1 和 col2 的值应该只是为了一个 ID 彼此一致。第 3 列包含对匹配不重要但应包含在数据框中的其他值。

期望的输出

列值匹配的数据框部分。

df = pd.DataFrame()
df['id'] = [1, 1]
df['col1'] = [10, 10]
df['col2'] = [100, 200]
df['col3'] = [1, 2]

您分组并检查 col1 中每个值的唯一值的数量,如果它是 1,则保留它:

df = df[(df.groupby(['id', 'col1'])['col2'].transform(lambda x: x.nunique()!=1))]
print(df)

id  col1  col2
2    20    50
2    20    50