Intersección de múltiples conjuntos de forma iterativa.
Tengo un dataframe (pero también puede ser solo conjuntos/listas):
Grupo Letra
1 {a,b,c,d,e}
2 {b,c,d,e,f}
3 {b,c,d,f,g}
4 {a,b,c,f,g}
5 {a,c,d,e,h}
Quiero agregar una columna con la intersección de los grupos 1-2, 1-2-3, 1-2-3-4, 1-2-3-4-5. Así que quedará algo así:
Grupo Letra Intersección
1 {a,b,c,d,e} None
2 {b,c,d,e,f} {b,c,d,e}
3 {b,c,d,f,g} {b,c,d}
4 {a,b,c,f,g} {b,c}
5 {a,c,d,e,h} {c}
He leído acerca de np.intersect1d, set.intersection, así que puedo hacer una intersección de múltiples conjuntos. Pero no sé cómo hacerlo de manera inteligente. ¿Alguien puede ayudarme con este problema?
davy.ai
Para agregar una columna con la intersección de los grupos 1-2, 1-2-3, 1-2-3-4 y 1-2-3-4-5 al marco de datos dado, uno puede usar un bucle for para iterar a través de cada fila del marco de datos y calcular la intersección en cada paso. A continuación se muestra un código de ejemplo que demuestra esta aproximación:
Este código primero crea el marco de datos como se indica en la declaración del problema. Luego define una lista de grupos para calcular las intersecciones, donde cada grupo es el conjunto de letras hasta una cierta fila en el marco de datos.
A continuación, el código itera a través de cada fila del marco de datos y calcula la intersección de las letras de esa fila con los grupos definidos anteriormente. En cada paso, el código verifica si la intersección de la fila actual con todas las filas anteriores en el grupo no está vacía. Si lo es, se agrega la intersección con la fila actual al conjunto de intersección en ejecución; de lo contrario, la intersección se establece en None y el bucle se rompe.
Finalmente, el código agrega la columna de intersección al marco de datos y muestra el resultado. La salida debe coincidir con el resultado deseado: