对于数据集df,我想按列Bfoobar的两组进行分组,并标识这两组中存在的重复行.我怎样才能做到这一点呢?

df = pd.DataFrame({'A': [1, 2, 2, 3, 3, 1],
                   'B': ['foo', 'bar', 'foo', 'bar', 'foo', 'foo']})
df = df.sort_values('B')
df
Out[15]: 
   A    B
1  2  bar
3  3  bar
0  1  foo
2  2  foo
4  3  foo
5  1  foo

预期结果:

   A    B  Indicator
1  2  bar  True  # value 2 also present in foo, so returns True
3  3  bar  True  # value 3 also present in foo, so returns True
0  1  foo  False  # value 1 only present in foo, so returns False
2  2  foo  True  # value 2 also present in bar, so returns True
4  3  foo  True  # value 3 also present in bar, so returns True
5  1  foo  False  # value 1 only present in foo, so returns False

Updates:

假设列B具有more than 2 categories,则样本数据df如下:

df = pd.DataFrame({'A': [1, 2, 2, 3, 3, 2, 1],  'B': ['foo', 'bar', 'foo', 'bar', 'foo', 'baz', 'baz']})
df = df.sort_values('B')
df
Out[30]: 
   A    B
1  2  bar
3  3  bar
5  2  baz
6  1  baz
0  1  foo
2  2  foo
4  3  foo

在这种情况下,预期结果如下所示:

   A    B  Indicator
1  2  bar  True  # The value 2 occurs in categories baz, bar, and foo, so returns True.
3  3  bar  False  # The value 3 only occurs in categories bar and foo, so returns False.
5  2  baz  True  # The value 2 occurs in categories baz, bar, and foo, so returns True.
6  1  baz  False  # The value 1 only occurs in categories baz and foo, so returns False.
0  1  foo  False  # The value 1 only occurs in categories baz and foo, so returns False.
2  2  foo  True  # The value 2 occurs in categories baz, bar, and foo, so returns True.
4  3  foo  False  # The value 3 only occurs in categories bar and foo, so returns False.

推荐答案

由于您有多个组,因此可以使用:

data = {'A': [2, 3, 2, 1, 1, 2, 3],
        'B': ['bar', 'bar', 'baz', 'baz', 'foo', 'foo', 'foo']}
df = pd.DataFrame(data).sort_values('B')

df['Indicator'] = df.groupby('A')['B'].transform('nunique') == df['B'].nunique()

输出:

>>> df
   A    B  Indicator
0  2  bar       True
1  3  bar      False
2  2  baz       True
3  1  baz      False
4  1  foo      False
5  2  foo       True
6  3  foo      False

Python-3.x相关问答推荐

使用Python装载. iso文件

确定字符串的长度并提取前15或14个字符

Pandas :从元组字典创建数据帧

像计数不显示在html和想知道如果我的模型设置正确

我们可以在每个可以使用 Pandas Join 的用例中使用 Pandas merge 吗?

Select 作为 MultiIndex 一部分的两个 DatetimeIndex 之间的行

Python中根据分组/ID对两个数据框进行映射,以更接近值的升序排列

在不改变 python 中原始数组顺序的情况下,对多维字符串数组进行降序排序?

转换Pandas 数据框 - 添加行

DynamoDB - boto3 - batch_write_item:提供的关键元素与架构不匹配

Pandas 按值和索引对 DF 进行排序

例外:使用 Pyinstaller 时找不到 PyQt5 插件目录,尽管 PyQt5 甚至没有被使用

预分配一个无列表

pythondecorator中的变量范围

在 sklearn.decomposition.PCA 中,为什么 components_ 是负数?

使用 Sublime Text 3 在 Python 3 中打印 UTF-8

如何将 Matplotlib 图形转换为 PIL Image 对象(不保存图像)

Python 无法处理以 0 开头的数字字符串.为什么?

Pylint 中的模块PyQt5.QtWidgets错误中没有名称QApplication

TypeError:无法将系列转换为