找到行之间的交集

时间:2014-07-17 17:28:35

标签: python pandas

如果我想在pandas DataFrame中找到两个连续行之间的差异,我可以简单地调用diff函数。

我的行包含set个字符。我现在要做的是计算rowise对中每组的交集。换句话说,我想使用diff,但提供我自己的功能。有没有办法在熊猫中实现这一目标?

示例输入:

 100118231     1               set([])           
               2            set([142.136.6])    
               3            set([142.136.6])    
               4            set([])             
               5            set([])             
               6            set([108.0.239])    

期望的输出:

 100118231     1               set([])             NaN
               2            set([142.136.6])    set([])
               3            set([142.136.6])    {142.136.6}
               4            set([])             set([])
               5            set([])             set([])
               6            set([108.0.239])    set([])

我尝试过使用shift,但会抛出错误

In [213]: type(tgr.head(1))
Out[213]: pandas.core.frame.DataFrame

In [214]: tt=tgr.apply(lambda x: x['value'].intersection((x['value'].shift(-1))))

AttributeError: 'Series' object has no attribute 'intersection'

1 个答案:

答案 0 :(得分:1)

&将遍历所有项目,不需要涉及lambdas等。

> df = pd.DataFrame(['hi', set([142,136,6]), set([142, 137, 6]), set([0, 6])]).iloc[1:]
> df & df.shift(1)
               0
1            NaN
2  set([142, 6])
3       set([6])