gpt4 book ai didi

python - Pandas 在 python Pandas 数据框中获取两行交集的方法

转载 作者:太空宇宙 更新时间:2023-11-04 03:09:10 26 4
gpt4 key购买 nike

假设我有一些如下所示的数据。我想获取同时具有两个标签的 ID 的数量。

tag id
a A
b B
a B
b A
c A

我想要的结果:

tag1 tag2 count
a b 2
a c 1
b c 1

在普通的 python 中,我可以编写伪代码:

d = defaultdict(set)
d[tag].add(id)
for tag1, tag2 in itertools.combinations(d.keys(), 2):
print tag1, tag2, len(d[tag1] & d[tag2])

这不是最有效的方法,但应该可行。现在我已经将数据存储在 Pandas 数据框中。有没有更多的 Pandas 方式来达到同样的结果?

最佳答案

这是我的尝试:

from itertools import combinations
import pandas as pd
import numpy as np

In [123]: df
Out[123]:
tag id
0 a A
1 b B
2 a B
3 b A
4 c A

In [124]: a = np.asarray(list(combinations(df.tag, 2)))

In [125]: a
Out[125]:
array([['a', 'b'],
['a', 'a'],
['a', 'b'],
['a', 'c'],
['b', 'a'],
['b', 'b'],
['b', 'c'],
['a', 'b'],
['a', 'c'],
['b', 'c']],
dtype='<U1')

In [126]: a = a[a[:,0] != a[:,1]]

In [127]: a
Out[127]:
array([['a', 'b'],
['a', 'b'],
['a', 'c'],
['b', 'a'],
['b', 'c'],
['a', 'b'],
['a', 'c'],
['b', 'c']],
dtype='<U1')

In [129]: np.ndarray.sort(a)

In [130]: pd.DataFrame(a).groupby([0,1]).size()
Out[130]:
0 1
a b 4
c 2
b c 2
dtype: int64

关于python - Pandas 在 python Pandas 数据框中获取两行交集的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38619427/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com