【发布时间】:2022-01-28 17:02:49
【问题描述】:
我正在寻找一种基于条件将数据框的列与其自身进行内部连接的方法。 我有一个由“组”和“个人”两列组成的大型数据框。现在我想创建第二个数据框,它为每个人元组都有一个条目,它一直在同一个组中。第一个数据框:
Group | Person
a1 | p1
a1 | p2
a1 | p3
a1 | p4
a2 | p1
输出:
Person1 | Person2 | Weight
p1 | p2 | 1
p1 | p3 | 1
p1 | p4 | 1
p2 | p3 | 1
p2 | p4 | 1
p3 | p4 | 1
如果一组人属于多个组,则权重会增加。 到目前为止,我能够基于一个子数据框和两个 for 循环创建一个简单的实现。有没有更优雅,更重要的是,更快/内置的方式来做到这一点?
到目前为止我的实现:
group = principals.iloc[i,0]
sub = principals.loc[principals['Group'] == group]
for j in range(len(sub)-1):
for k in range (j+1,len(sub)):
#check if tuple exists -> update or create new entry
我在想,是否有类似SQL内连接的功能,基于组相同的条件,然后以人对人的方式连接。在这种情况下,我可以处理双 p1|p1 条目...
在此先感谢
【问题讨论】:
标签: python python-3.x pandas dataframe inner-join