J'ai la série de pandas ci-dessous et j'ai besoin de sélectionner des lignes qui est Superset d'autres lignes.
Série: P>
1 [72197, 82086, 194665] 2 [72230] 3 [72235, 72690, 121261] 4 [72241] 5 [72251] 6 [72253, 83613, 101294] 7 [72255, 122794] 8 [71962, 101646, 101663, 126351, 141883]
3 Réponses :
Si la commande n'est pas importante, vous pouvez utiliser un peu changé Cette Solution - Conversion des listes intérieures à Set Code > S PREMIER ET DERNIER CONVERT DERNIER:
s = pd.Series(eliminate_subsets(list(map(set, s))))
print (s)
0 [194665, 72197, 82086]
1 [72230]
2 [72690, 72235, 121261]
3 [72241]
4 [72251]
5 [101294, 72253, 83613]
6 [122794, 72255]
7 [101646, 126351, 71962, 141883, 101663]
dtype: object
Vous pouvez essayer ceci:
df = pd.DataFrame({'ser': [[72197, 82086], [72197, 82086, 194665], [72230], [72235, 72690, 121261], [72235, 121261], [72241], [72251], [72253, 83613], [72253, 83613], [72253, 83613, 101294], [72255, 122794], [71962, 101646, 101663, 126351], [71962, 101646, 101663, 126351, 141883], [71962, 101646, 101663, 141883], [72235]]}) df ser 0 [72197, 82086] 1 [72197, 82086, 194665] 2 [72230] 3 [72235, 72690, 121261] 4 [72235, 121261] 5 [72241] 6 [72251] 7 [72253, 83613] 8 [72253, 83613] 9 [72253, 83613, 101294] 10 [72255, 122794] 11 [71962, 101646, 101663, 126351] 12 [71962, 101646, 101663, 126351, 141883] 13 [71962, 101646, 101663, 141883] 14 [72235] supersets = [] for i, x in enumerate(df['ser']): a = np.array([set(x).issuperset(set(row)) for row in df['ser']]) a = np.delete(a, i) if any(a): supersets.append(x) print(supersets) [[72197, 82086, 194665], [72235, 72690, 121261], [72235, 121261], [72253, 83613], [72253, 83613], [72253, 83613, 101294], [71962, 101646, 101663, 126351, 141883]]
Si vous utilisez une liste normale, je suppose que vous pouvez utiliser SET (A)
Est-il nécessaire d'avoir une série ici? Je pense qu'il serait plus facile de jouer avec un fichier de données.
Non, peut convertir en Dataframe aussi
Le commandement important des valeurs dans les listes?
Comment se passe [72241] ou [72251] Superset d'autres lignes, autre que lui-même?
@jezrael Aucun ordre n'est pas important
@MOHITMOTWANI Depuis qu'ils ne sont pas inclus nulle part, alors gardez-les comme.
@ user3222101 - La solution a été modifiée un peu modifiée, veuillez vérifier.