【问题标题】:Create new column in pandas dataframe based on pattern change in first column [duplicate]根据第一列中的模式变化在熊猫数据框中创建新列[重复]
【发布时间】:2018-09-16 17:09:49
【问题描述】:

我有一个如下的数据框:

df = pd.DataFrame({'Status': [0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1]})

我想根据“状态”模式的变化创建一个新列“组”。基本上我想要如下输出:

    Status  Group
0        0      1
1        0      1
2        1      2
3        1      2
4        1      2
5        0      3
6        0      3
7        0      3
8        0      3
9        1      4
10       1      4

简单的方法是迭代每一行,然后根据模式变化更新“组”列。我想知道是否有更好的方法来解决这个问题。

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    使用pd.Series.cumsum

    df['Group'] = df.Status.ne(df.Status.shift()).cumsum()
    

    df['Group'] = df.Status.diff().ne(0).cumsum()
    

    两者都有

        Status  Group
    0   0       1
    1   0       1
    2   1       2
    3   1       2
    4   1       2
    5   0       3
    6   0       3
    7   0       3
    8   0       3
    9   1       4
    10  1       4
    

    【讨论】:

    • 谢谢这解决了我的问题。我知道 cumsum 但我不知道 ne 功能。有了这个我学到了系列的新功能。再次感谢。
    猜你喜欢
    • 2019-12-21
    • 1970-01-01
    • 2023-02-05
    • 2019-07-25
    • 2016-08-28
    • 2021-09-11
    • 2019-01-23
    • 2012-06-19
    相关资源
    最近更新 更多