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

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

我有以下数据框:

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

目标

从此数据帧中,我想返回数据帧中col1中的值可以在col2中具有multiple values的部分。在这种情况下,id'1'和id'2'在col1中的值均为10,并且在col2中也应具有相同的值。这些ID并非如此。值正确匹配的示例是ID为'3'和'4'的值,因为它们的两行都具有对。

所需的输出

数据框中与列的值匹配的部分。

df = pd.DataFrame()
df['id'] = [1, 2]
df['col1'] = [10, 10]
df['col2'] = [100, 200]
python pandas matching
1个回答
0
投票

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

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

id  col1  col2
1    10   100
2    10   200
© www.soinside.com 2019 - 2024. All rights reserved.