агрегирование таблицы с использованием панд - PullRequest
0 голосов
/ 14 мая 2018

Ниже ввод.

            X   Y   Z
AP          1   1   1
Karnataka   0   1   0
Goa         1   1   0
Tamilnadu   0   1   0
AP          0   1   1
Goa         0   0   0
Tamilnadu   0   1   1
Goa         0   0   0
AP          1   0   0
Tamilnadu   0   1   0
Tamilnadu   1   1   0
Goa         0   1   1
Karnataka   0   0   0
Karnataka   0   1   0

Расчеты, которые необходимо выполнить:

  1. количество состояний в столбце A

  2. число присутствующих 1 в столбце X, деленное на количество каждого состояния в столбце A

  3. Код должен быть динамическим, так как количество столбцов и строк может варьироваться.

Ожидаемый результат:

                   Total      AP   Karnataka    Goa      Tamilnadu
Total Sample        14        3        3         4           4
X                 0.2857    0.6667  0.0000    0.2500      0.2500
Y                 0.7143    0.6667  0.6667    0.5000      1.0000
Z                 0.2857    0.6667  0.0000    0.2500      0.2500

1 Ответ

0 голосов
/ 14 мая 2018

Я уверен, что есть лучший способ, но работает следующее.

Предположим, что my_df имеет входные данные;

result=my_df.groupby('A').mean().transpose()
result1=my_df.groupby('A').sum().transpose()
result1=result1.append(my_df['A'].value_counts())
result1=result1.rename({'A':'Total Sample'})
result1['Total']=result1.apply('sum',axis=1)
finalRow=result1.iloc[len(result1)-1]
for i in range(len(result1)-1):
    result1.iloc[i]=result1.iloc[i]/finalRow
result['Total']=result1['Total']
result=result.append(result1.loc['Total Sample'])

Готово !!!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...