我正在尝试根据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

10-07 12:33