如何检查一列中的值是否可以包含多于另一列中的值
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
我有以下数据框:
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