Python :缩放 pandas 数据框中的列

Python : Scale columns in pandas dataframe

我得到了一个包含多列的数据框。 每个列都需要用单独的值进行缩放,我想知道是否有任何 oneliner 可以在给定字典或其他东西的情况下适当地缩放列。

例如。 scalingDictionary = {'a': 10, 'b': 5, 'c':0.1} df = pd.Dataframe({'a':[2,4,6,8], 'b':[3,6,9,12], 'c':[1, 2,3,4]})

oneliner 缩放...其中每一列都乘以字典中的所需值 应该给出所需的输出

a    b    c
20   15   0.1
40   30   0.2
60   45   0.3
80   60   0.4

带有字典的多个 DataFrame,如果键与列名相同则工作良好:

df = df.mul(scalingDictionary)    
print (df)
      a     b    c
0  20.0  15.0  0.1
1  40.0  30.0  0.2
2  60.0  45.0  0.3
3  80.0  60.0  0.4       

如果某些列不匹配:

scalingDictionary = {'a': 10, 'b': 5} 

df = pd.DataFrame({'a':[2,4,6,8], 'b':[3,6,9,12], 'c':[1,2,3,4]})

df = df.mul(pd.Series(scalingDictionary).reindex(df.columns, fill_value=1))
print (df)
    a   b  c
0  20  15  1
1  40  30  2
2  60  45  3
3  80  60  4

或者:

df = df.mul({**dict.fromkeys(df.columns, 1), **scalingDictionary})
print (df)
    a   b  c
0  20  15  1
1  40  30  2
2  60  45  3
3  80  60  4