Я пытаюсь группировать на столбец, содержащий кортежи. Каждый кортеж имеет разную длину.Pandas Groupby: группа ** ** колонка, содержащая кортежи
Я хотел бы выполнить простые групповые операции над этим столбцом кортежей, такие как сумма или счет.
Пример:
df = pd.DataFrame(data={
'col1': [1,2,3,4] ,
'col2': [('a', 'b'), ('a'), ('b', 'n', 'k'), ('a', 'c', 'k', 'z') ] ,
})
print df
выходы:
col1 col2
0 1 (a, b)
1 2 (a, m)
2 3 (b, n, k)
3 4 (a, c, k, z)
Я хотел бы, чтобы иметь возможность группе по col2 на col1, например с суммой.
Ожидаемый результат будет:
col2 sum_col1
0 a 7
1 b 4
2 c 4
3 n 3
3 m 2
3 k 7
3 z 4
Я чувствую, что pd.melt может быть в состоянии использовать, но я не могу видеть, как именно.
Отлично! Спасибо Primer! Я узнал здесь несколько новых трюков! Вопрос: может ли 'df.columns.difference (df [[value_col, id_col]]. Column)' быть упрощено в 'df.columns.difference ([value_col, id_col])' или есть причина для этой более сложной формы? – knightofni
'df.columns.difference ([value_col, id_col])' также в этом случае. '.difference' - это метод объекта« Index », а подход с безопасным отказом - использовать его с другим объектом« Index ». Но, похоже, он тоже может работать со списками. – Primer
Хорошо, мера безопасности. Отлично, спасибо, праймер. – knightofni