Я пытаюсь установить значение одной ячейки в большой части данных на основе формулы из других ячеек в другом месте в df. Здесь ключевая часть кода:
df.loc[df['Category'] == 'Total', 'Tot Wgt'] = df.loc[df['Category'] == 'B', 'Wgt']
Таким образом, в строке, где "Категория" является "Итогом", я хочу, чтобы столбец "Tot Wgt" был настроен на то, что "B" и "Wgt" равны. Однако мой код выше просто выводит пробел. Есть идеи?
ИЗМЕНИТЬ ДОБАВИТЬ
(Простая версия) Dataframe выглядит примерно так:
Index Category Wgt Tot Wgt
0 A 5
1 B 2
2 C 11
3 Total 2
Все элементы столбца "Категория" уникальны.
Я считаю, что нужны values
чтобы избежать выравнивания индекса:
df = pd.DataFrame({'A':list('abcdef'),
'Category':['A','B','C','D','E', 'Total'],
'Wgt':[5,3,6,9,2,4],})
print (df)
A Category Wgt
0 a A 5
1 b B 3
2 c C 6
3 d D 9
4 e E 2
5 f Total 4
df.loc[df['Category'] == 'Total', 'Tot Wgt'] = df.loc[df['Category'] == 'B', 'Wgt'].values
print (df)
A Category Wgt Tot Wgt
0 a A 5 NaN
1 b B 3 NaN
2 c C 6 NaN
3 d D 9 NaN
4 e E 2 NaN
5 f Total 4 3.0
Детали:
Если индексы различны и требуется присвоение строк, получаем NaN.
print (df.loc[df['Category'] == 'B'])
A Category Wgt
1 b B 3 <-index is 1
print (df.loc[df['Category'] == 'Total'])
A Category Wgt
5 f Total 4 <-index is 5