J'ai beaucoup de catégories avec des éléments dans des listes comme celles-ci :
colors = ['green', 'red']
animals = ['cat', 'dog']
J'ai un grand cadre de données qui contient tous les éléments dans les catégories, comme suit :
largedf = pd.DataFrame({'arow': ['row1', 'row2', 'row3', 'row4'], 'green': ['a', 'b', 'b', 'a'], 'red': ['a', 'b', 'b', 'a'],
'cat': ['b', 'a', 'b', 'a'], 'dog': ['b', 'a', 'b', 'a']})
arow cat dog green red
0 row1 b b b a
1 row2 a a b b
2 row3 b b b b
3 row4 a a a a
Je veux sauvegarder uniquement les lignes où a
est la valeur pour une certaine catégorie et seulement cette catégorie. row3
ne serait pas sauvée parce qu'elle a b
pour tous les articles, row4
ne serait pas sauvée parce qu'elle a a
pour tous les articles.
row1
serait sauvé parce qu'il a un a
para red
(même s'il existe un b
pour le vert, au moins un a
fait partie de cette catégorie).
row2
serait sauvé parce qu'il y a au moins un a
en cat/dog
(dans ce cas, un a
dans les deux cas).
Pour chaque rangée sauvegardée, j'aimerais avoir une colonne listant la catégorie qui a a
et le pourcentage de a
dans cette catégorie (voir le résultat ci-dessous).
shorterdf = pd.DataFrame({'arow': ['row1', 'row2'], 'green': ['a', 'b'], 'red': ['a', 'b'], 'cat': ['b', 'a'], 'dog': ['b', 'a']})
arow cat dog green red category percent
0 row1 b b b a colors 0.5
1 row2 a a b b animals 1