【问题标题】:normalize each row separately in python在python中分别规范化每一行
【发布时间】:2022-08-03 22:04:13
【问题描述】:

我想应用(第一个值 - 值)/(每行的标准偏差)的归一化函数。

例如: |身份证 |一个 |乙| C | |--- |---|---|---| |1 |20 |3 |6 | |2 |30 |4 |7 | |3 |40 |5 |8 | |... |...|...|...| |1000|300|23 |21 |

所以我希望每行中的第一个值为零。

我尝试使用此代码但不起作用

for i in range(len(df)):
new_norm = df((df5_out.iloc[i][0] - df.iloc[i,:])/df.std(axis=1))
df= df.apply(new_norm, axis=1)
df

    标签: python normalize


    【解决方案1】:
    import pandas as pd
    df = pd.DataFrame({
        "ID": [1,2,3,10],    
        "A": [20,30,40,300],
        "B": [3,4,5,23],
        "C": [6,7,8,21]
    })
    vals = df.drop(columns=["ID"]).values
    pd.DataFrame((vals[0, :] - vals) / vals.std(axis=0), columns=df.columns[1:])
    

    输出:

        A           B           C 
    0   0.000000    0.000000    0.000000
    1   -0.085377   -0.121101   -0.163846
    2   -0.170755   -0.242202   -0.327693
    3   -2.390566   -2.422019   -2.457696
    

    【讨论】:

      猜你喜欢
      • 2015-12-13
      • 2018-05-18
      • 2011-03-13
      • 2013-09-11
      • 2018-12-12
      • 1970-01-01
      • 2020-08-08
      • 2016-07-16
      • 2014-02-17
      相关资源
      最近更新 更多