2016-02-16 4 views
0

Ищет помощь group by Элементы столбца в Pandas df.Pandas: Группа по элементам столбца

Оригинал ДФ:

Country Feature Number 
0  US   A   1 
1  DE   A   2 
2  FR   A   3 
3  US   B   0 
4  DE   B   5 
5  FR   B   7 
6  US   C   9 
7  DE   C   0 
8  FR   C   1 

Желаемая ДФ:

Country A B C 
0 US   1 0 9 
1 DE   2 5 0 
2 FR   3 7 1 

Не уверен, что если group by является лучшим выбором, если я должен создать словарь. Заранее спасибо за вашу помощь!

ответ

3

Вы можете использовать pivot_table для этого:

In [39]: df.pivot_table(index='Country', columns='Feature') 
Out[39]: 
     Number 
Feature  A B C 
Country 
DE   2 5 0 
FR   3 7 1 
US   1 0 9 

Если вы хотите, чтобы ваш индекс будет 0, 1, 2, вы можете использовать reset_index

EDIT

Если ваш Number фактически не номера, но строки вы можете конвертировать эту колонку с astype или с pd.to_numeric:

df.Number = df.Number.astype(float) 

или:

df.Number = pd.to_numeric(df.Number) 

Примечание: pd.to_numeric доступна только для панд >= 0.17.0

+0

Спасибо за ответ: @Anton Протопопов! Однако это вызвало следующую ошибку: «DataError: нет числовых типов для агрегирования» Любые мысли о том, как исправить? – Levine

+1

@Levine, вы должны сначала преобразовать свой номер из 'str' в' int' или 'float' –

+0

@Levine попробовал отредактировать ответ –

Смежные вопросы