2016-06-27 3 views
0

У меня есть файл данных Pandas DataFrame с некоторыми независимыми столбцами, и я ищу эффективный способ их размочить/заполнить.Совокупные наборы столбцов Pandas DataFrames

Итак, допустим, у меня есть таблица:

+-----+-----+-------+------+-------+ 
| One | Two | Three | Four | Count | 
+-----+-----+-------+------+-------+ 
| a | x | y  | y | 3  | 
+-----+-----+-------+------+-------+ 
| b | z | x  | x | 5  | 
+-----+-----+-------+------+-------+ 
| c | y | x  | y | 1  | 
+-----+-----+-------+------+-------+ 

Где строки два, три и четыре являются независимыми.

Я хотел бы, чтобы в конечном итоге с таблицей:

+-----+-------+-------+ 
| One | Other | Count | 
+-----+-------+-------+ 
| a | x  | 3  | 
+-----+-------+-------+ 
| a | y  | 6  | 
+-----+-------+-------+ 
| b | x  | 10 | 
+-----+-------+-------+ 
| b | z  | 5  | 
+-----+-------+-------+ 
| c | x  | 1  | 
+-----+-------+-------+ 
| c | y  | 2  | 
+-----+-------+-------+ 

Как бы лучшим способом для достижения этой цели?

ответ

0

Вы можете использовать функцию melt из pandas, чтобы изменить ваш кадр данных от широкоугольного до длинного формата, то GroupBy в One и Other столбцов и sumCount колонка:

import pandas as pd 
pd.melt(df, id_vars = ['One', 'Count'], value_name = 'Other').groupby(['One', 'Other'])['Count'].sum().reset_index() 

    One Other Count 
0 a x 3 
1 a y 6 
2 b x 10 
3 b z 5 
4 c x 1 
5 c y 2 
Смежные вопросы