如果我想在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'
答案 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])