использовать словарь или сопоставить значения групп в обычный элемент данных в Python - PullRequest
0 голосов
/ 28 ноября 2018

У меня есть фрейм данных с двумя столбцами, x и y, показанными ниже.

X     Y
2     W
3     AA
6.5   W
8     W
23    AA

Я применил формулу, чтобы найти общий вес для каждой группы.Группировка по значениям y в этом случае.Найдено для группы W total_weightt = 0,611 и для группы AA total_weight = 0,258

Ниже приведен вывод, который мне нужен?

X     Y     total_weight
2     W     0.611
3     AA    0.258
6.5   W     0.611
8     W     0.611
23    AA    0.258

Может включать использование словаря или какой-либо команды перечисления / итерации.

См. Приведенный ниже код с использованием Python 3. Я создал фрейм данных и рассчитал total_weights для каждой группы.Как мне сопоставить его с исходным фреймом данных?

data = {'x':[2,3,6.5,8,23], 'y':['W','AA','W','W','AA']}
df = DataFrame (data, columns=['x', 'y'])

grouped = df.groupby('y')
ni = len(grouped['x'])
n_weight = ni/len(df['x'])
ci = grouped['x'].mean()
c_weight = ci/df['x'].mean()
total_weight = n_weight * c_weight
print (total_weight)

1 Ответ

0 голосов
/ 28 ноября 2018

У вас есть правильный ответ на этот вопрос в заголовке вашего вопроса: map:

df['total_weight'] = df['y'].map(total_weight)

Результаты:

      x   y  total_weight
0   2.0   W      0.258824
1   3.0  AA      0.611765
2   6.5   W      0.258824
3   8.0   W      0.258824
4  23.0  AA      0.611765
...