使用pandas groupby创建新列以指示特定列的趋势

问题描述 投票:0回答:1

我有一个数据框,如下所示

Session        ID       cumulative_prob
s1              1       0.4
s1              3       0.9
s1              4      -0.1
s1              5       0.3
s1              8       1.2
s1              9       0.2
s2              22      0.4
s2              29      0.7
s2              31      1.4
s2              32      0.4
s2              34      0.9
s3              36      0.9
s3              37     -0.1
s3              38      0.2
s3              40      1.0

从我想创建一个新的列来指示会话明智的趋势(增加或减少)

预期输出:

Session        ID       cumulative_prob     Decrease
    s1              1       0.4             no
    s1              3       0.9             no
    s1              4      -0.1             yes
    s1              5       0.3             no
    s1              8       1.2             no
    s1              9       0.2             yes
    s2              22      0.4             no
    s2              29      0.7             no
    s2              31      1.4             no
    s2              32      0.4             yes
    s2              34      0.9             no
    s3              36      0.9             no
    s3              37     -0.1             yes
    s3              38      0.2             no
    s3              40      1.0             no

注意:对于每个会话的第一行,请保持默认'否'

pandas pandas-groupby
1个回答
1
投票

用途:

df['Decrease'] = np.where(df.groupby('Session')['cumulative_prob'].diff().fillna(0).lt(0),
                          'yes', 'no')
© www.soinside.com 2019 - 2024. All rights reserved.