【问题标题】:Python dataframe apply function groupby and per columnPython数据框应用函数groupby和每列
【发布时间】:2020-07-24 04:52:42
【问题描述】:

我有一个数据框:

df = Condition A_value B_value
       15       2       3
       30       1       8
       45       5       1
       15       3       9
       30       4       6
       45       8       2
       15       5       2
       30       7       3
       45       9       1
       15       0       8
       30       8       7
       45       1       3

我要申请sklearn.preprocessing.StandardScaler

在每一列上,按类型。 (这意味着它将为 condition=15 的行缩放列 A_value,然后是 30、45 的 A_value 和 15 的 B_value,然后是 30,然后是 45。 有没有办法在不遍历所有组的情况下做到这一点? (例如单线?)

最好的方法是什么?

【问题讨论】:

    标签: python pandas pandas-groupby data-science


    【解决方案1】:

    使用GroupBy.transform 分别处理每个组的每一列,使用Series.to_frame,添加DataFrame.set_index 用于处理没有Condition 的所有列:

    from sklearn.preprocessing import StandardScaler
    
    f = lambda x: (StandardScaler().fit_transform(x.to_frame()))[:, 0]
    df = df.set_index('Condition').groupby('Condition').transform(f).reset_index()
    print (df)
        Condition   A_value   B_value
    0          15 -0.277350 -0.821995
    1          30 -1.460593  1.069045
    2          45 -0.240966 -0.904534
    3          15  0.277350  1.150793
    4          30 -0.365148  0.000000
    5          45  0.722897  0.301511
    6          15  1.386750 -1.150793
    7          30  0.730297 -1.603567
    8          45  1.044185 -0.904534
    9          15 -1.386750  0.821995
    10         30  1.095445  0.534522
    11         45 -1.526117  1.507557
    

    【讨论】:

      猜你喜欢
      • 2022-01-14
      • 2021-09-05
      • 2022-01-04
      • 2021-09-23
      • 2021-07-22
      • 2017-12-20
      • 1970-01-01
      • 1970-01-01
      • 2023-03-24
      相关资源
      最近更新 更多