2016-11-05 1 views
1

У меня возникли проблемы с использованием сводной таблицы с именами столбцов в пандах.pandas pivot table: проблема с делением на сумму строк

здесь моя проблема

from collections import OrderedDict 
import pandas as pd 


table = OrderedDict((
("Item", ['Item0', 'Item0', 'Item1', 'Item1']), 
('CType',['Gold', 'Bronze', 'Gold', 'Silver']), 
('USD', [1, 2, 3, 4]), 
('EU', [1, 2, 3, 4]) 
)) 
d = pd.DataFrame(table) 

print d 

p = d.pivot_table(index='Item', columns='CType', values='USD') 
print p 

p.fillna(0, inplace=True) 
print p 

Следующая операция дает мне NaN в странной форме. Что мне не хватает?

p/p.sum(axis = 1) 

PS: пример данных берется из here, но мои собственные данные показывают такое же поведение

ответ

3

Использование DF.div вместо:

p.div(p.sum(1), 0) 

enter image description here

axis=1 в afore- упомянутый метод ведет себя аналогично тому, как вы это делали, прежде чем все Nans.

Вам необходимо вычислить по ряду (по индексу), указав axis=0.

+1

спасибо Nickil. Это здорово и работает так, как ожидалось. Мне все еще интересно, как обращаться с «названными столбцами», которые исходят из операций поворота. Выведет отдельный вопрос – user1043144

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

  • Нет связанных вопросов^_^