代码之家  ›  专栏  ›  技术社区  ›  KOB

如何应用df。min()和df。max()分布在多个数据帧上

  •  1
  • KOB  · 技术社区  · 6 年前

    我有一个数据帧列表,所有数据帧都具有相同的列,并且希望将所有数据帧中的值标准化为[0,1],同时保持数据帧之间值的相对缩放。

    对于单个数据帧,我可以:

    df = (df - df.min()) / (df.max() - df.min())
    

    但是,我如何获得所有数据帧中每列的最小值和最大值,然后使用每列的最小值和最大值集合,将上述公式应用于每个单独的数据帧?

    以下是2个数据帧的示例列表,其中每个数据帧都被单独归一化:

    import numpy as np
    import pandas as pd
    
    dfs = []
    
    for i in range(2):
        data = np.random.rand(3, 3)
        df = pd.DataFrame(data, columns=["one", "two", "three"])
        dfs.append(df)
        print(df)
    
    for i in range(2):
        dfs[i] = (dfs[i] - dfs[i].min()) / (dfs[i].max() - dfs[i].min())
        print(dfs[i])
    
    1 回复  |  直到 6 年前
        1
  •  0
  •   BENY    6 年前

    我会的 concat 将dfs转换为一个df,并使用多索引进行计算

    df=pd.concat(dfs,keys=range(len(dfs)))
    df =df.groupby(level=0).apply(lambda x : (x - x.min()) / (x.max() - x.min()))
    

    如果你想看第一个df

    df.loc[0]
    Out[20]: 
            one       two     three
    0  1.000000  0.576142  0.000000
    1  0.559371  0.000000  1.000000
    2  0.000000  1.000000  0.594986