我正在尝试根据df中其他单元格的公式来设置大型数据框中单个单元格的值。这是代码的关键部分:
df.loc[df['Category'] == 'Total', 'Tot Wgt'] = df.loc[df['Category'] == 'B', 'Wgt']
因此,在“类别”为“总计”的行中,我希望将“ Tot Wgt”列设置为等于“ B”和“ Wgt”的任何值。但是我上面的代码只是输出一个空白。有任何想法吗?
编辑添加
(的简单版本)数据框看起来像这样:
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