[英]Pandas: Nested iteration of DataFrame
我有一个包含两列的数据框:“ rep_id”和“ values”。 第二列是数字列表。
我想计算“ rep_id”的所有可能对,然后找到这些对共有的值。
最终的数据框看起来像:“ rep_id1”,“ rep_id2”,“ values”,其中“ values”表示“ rep_id1”和“ rep_id2”列表之间的公共元素列表。
一种实现方法是创建一个嵌套循环并遍历rep_id对,但我似乎找不到一种实现方法。
http://en.wikipedia.org/wiki/Cartesian_product
import pandas as pd
df = pd.DataFrame(zip(['A','B','C','D','E','A','B','C','A'],[1,2,3,4,5,2,3,5,5]),columns=['rep_id','val'])
df = df.sort('val')
cartesian_product = pd.merge(df, df,on='val')
cartesian_product = cartesian_product[cartesian_product['rep_id_x'] != cartesian_product['rep_id_y']]
cartesian_product[['val','rep_id_x','rep_id_y']]
df:
rep_id val
0 A 1
1 B 2
5 A 2
2 C 3
6 B 3
3 D 4
4 E 5
7 C 5
8 A 5
笛卡尔积:
val rep_id_x rep_id_y
2 2 B A
3 2 A B
6 3 C B
7 3 B C
11 5 E C
12 5 E A
13 5 C E
15 5 C A
16 5 A E
17 5 A C
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.