我有一个包含光谱数据和元数据的熊猫数据框。这些列用多索引进行标记,以便df['wvl']
给出谱图并且df['meta']
给出元数据。在df['wvl']
内,列标签是光谱仪通道的波长值。规范化熊猫数据框的行数其总和
我想要做的就是将该行的总和标准化为df['wvl']
的每一行,以便将行中的值相加得出总数为1.0。
下面是数据帧的一行是这样的:
df['wvl'].iloc[0]
246.050003 128.533035
246.102005 102.756321
246.156006 99.930775
...
848.697205 121.313347
848.896423 127.011662
849.095703 123.234168
Name: 0, dtype: float64
但是,当我做这样的事情:
df['wvl'].iloc[0]=df['wvl'].iloc[0]/df['wvl'].iloc[0].sum()
什么也没有发生!我得到确切的相同的价值观:
df['wvl'].iloc[0]
246.050003 128.533035
246.102005 102.756321
246.156006 99.930775
...
848.697205 121.313347
848.896423 127.011662
849.095703 123.234168
Name: 0, dtype: float64
如果我创建一个临时变量来保存该行,我可以做归一化就好了:
temp=df['wvl'].iloc[0]
temp=temp/temp.sum()
temp
246.050003 0.000027
246.102005 0.000022
246.156006 0.000021
...
848.697205 0.000026
848.896423 0.000027
849.095703 0.000026
Name: 0, dtype: float64
但是,如果我尝试更换数据框行归一化的临时变量,没有任何反应:
df['wvl'].iloc[0]=temp
df['wvl'].iloc[0]
246.050003 128.533035
246.102005 102.756321
246.156006 99.930775
...
848.697205 121.313347
848.896423 127.011662
849.095703 123.234168
Name: 0, dtype: float64
我明明在这里的东西,但我想不出什么,它的驾驶我疯狂。帮帮我?提前致谢!
[规范化由行一个大熊猫数据帧(https://stackoverflow.com/questions/18594469/normalizing-a-pandas-dataframe-by-row)的可能的复制 –