查找与另一列Pandas中的唯一值关联的列中的值的交集

时间:2016-05-13 06:55:30

标签: python pandas

如果我有像这样的(非常小的例子)

这样的DataFrame
  col1  col2
0    a     1
1    a     2
2    b     1
3    b     2
4    b     4
5    c     1
6    c     2
7    c     3

我希望所有col2值与其唯一col1值相关时的交集(所以在这种情况下,交点将是[1,2]),我该怎么办?熊猫?另一种说法是col2col1中每个唯一值存在的值col1

我的(错误的)解决方案是使用unique获取唯一的col1元素,然后从RelativeLayout中的每个唯一元素构建字典,然后执行这些字典值的集合交集。我觉得我应该使用一种机制来将列相关联,但这可以使这更容易。

2 个答案:

答案 0 :(得分:2)

一种方法是使用pivot_table

In [11]: cross = df.pivot_table(index="col1", columns="col2", aggfunc='size') == 1

In [12]: cross
Out[12]:
col2     1     2      3      4
col1
a     True  True  False  False
b     True  True  False   True
c     True  True   True  False

In [13]: cross.all()
Out[13]:
col2
1     True
2     True
3    False
4    False
dtype: bool

In [14]: cross.columns[cross.all()]
Out[14]: Int64Index([1, 2], dtype='int64', name='col2')

答案 1 :(得分:1)

另一种解决方案:

NewItemPlaceholder