我有一個包含光譜數據和元數據的熊貓數據框。這些列用多索引進行標記,以便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)的可能的複製 –