Python Pandas—由“索引”索引的Panda子集的标量操作;loc";
您好,提前感谢您提供的任何提示或建议 我有一个熊猫数据帧“df”,看起来像这样: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.
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