如何在多个 DataFrame 上分布应用 df.min() 和 df.max()

How to apply df.min() and df.max() distributively over many DataFrames

我有一个 DataFrame 列表,所有列都具有相同的列,我想将所有列中的值标准化为 [0, 1],同时保持 DataFrame 之间值的相对比例。

对于单个 DataFrame,我可以这样做:

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

但是,我如何获取所有 DataFrame 中每一列的最小值和最大值,然后将与上述相同的公式应用于每个单独的 DataFrame,使用每一列的集体最小值和最大值?

这是 2 个 DataFrame 的示例列表,其中每个 DataFrame 都被单独标准化:

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])

我会concat把dfs变成一个df,用multiindex计算

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