Python Pandas—由“索引”索引的Panda子集的标量操作;loc";

Python Pandas—由“索引”索引的Panda子集的标量操作;loc";,python,pandas,dataframe,Python,Pandas,Dataframe,您好,提前感谢您提供的任何提示或建议 我有一个熊猫数据帧“df”,看起来像这样: Next Origin values A3-S B3-M A3-S 6 A3-S D4-M B3-M 7 D4-M A4-M D4-M 6 A4-M A4-S A4-M 6 我想对给定标签内所有行的“值”列中的所有值求和,然后将同一行中“值”中的每个值除以所获得的和-因此该标签行的值在0和1之间标准化 与: sum=dataf.

您好,提前感谢您提供的任何提示或建议

我有一个熊猫数据帧“df”,看起来像这样:

      Next Origin  values
A3-S  B3-M   A3-S       6
A3-S  D4-M   B3-M       7
D4-M  A4-M   D4-M       6
A4-M  A4-S   A4-M       6
我想对给定标签内所有行的“值”列中的所有值求和,然后将同一行中“值”中的每个值除以所获得的和-因此该标签行的值在0和1之间标准化

与:
sum=dataf.loc['A3-S','values'].sum()
I在标签“A3-S”的“values”列中有值的总和,如:

当我试着用我感兴趣的每一行除以总和

dataf.loc['A3-S', 'values']= dataf.loc['A3-S','values'] / sum
我得到一个错误:

in _setitem_with_indexer
    raise ValueError('Must have equal len keys and value '
ValueError: Must have equal len keys and value when setting with an iterable
我尝试过其他选项,但没有成功,例如:

dataf.loc['A3-S', 'values'] = dataf.loc['A3-S', 'values'].apply(lambda x: x/sumat)
你知道我该怎么做吗?

IIUC:

In [23]: df['val_norm'] = df.groupby(level=0)['values'].transform(lambda x: x/x.sum())

In [24]: df
Out[24]:
      Next Origin  values  val_norm
A3-S  B3-M   A3-S       6  0.461538
A3-S  D4-M   B3-M       7  0.538462
D4-M  A4-M   D4-M       6  1.000000
A4-M  A4-S   A4-M       6  1.000000
IIUC:


谢谢你,马祖,它对我有用。我正在努力理解文档中“groupby”下的选项和可能性。谢谢你,MaxU,它对我有用。我试图了解文档中“groupby”下的选项和可能性。
In [23]: df['val_norm'] = df.groupby(level=0)['values'].transform(lambda x: x/x.sum())

In [24]: df
Out[24]:
      Next Origin  values  val_norm
A3-S  B3-M   A3-S       6  0.461538
A3-S  D4-M   B3-M       7  0.538462
D4-M  A4-M   D4-M       6  1.000000
A4-M  A4-S   A4-M       6  1.000000