У меня есть много категорий с элементами в списках, например так:
colors = ['green', 'red']
animals = ['cat', 'dog']
У меня есть большой фрейм данных, в котором есть все элементы в категориях, например так:
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
Я хочусохранить только те строки, где a
- это значение для определенной категории и только для этой категории.row3
не будет сохранено, поскольку имеет b
для всех элементов, row4
не будет сохранено, поскольку имеет a
для всех элементов.
row1
будет сохранено, поскольку оно имеетa
для red
(хотя для зеленого есть b
, по крайней мере, один a
находится в этой категории).
row2
будет сохранено, потому что есть хотя бы один a
в cat/dog
(в этом случае a
в обоих).
Для каждой сохраненной строки мне нужен столбец, в котором перечислены категории, в которых есть a
и процент a
в этой категории (см. Вывод ниже).
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