【问题标题】:How to count consecutive value change to zero in column python如何在python列中计算连续值变化为零
【发布时间】:2020-02-04 04:52:25
【问题描述】:

从数据框中想要检查列中值更改为零的次数。

这里是输入df

pd.DataFrame({'value1':[3,4,7,0,11,20,0,20,15,16],
             'value2':[2,2,0,8,8,2,2,2,5,5],
             'value3':[7,10,20,4008,0,1,4820,1,1,1]})
 value1  value2  value3
0       3       2       7
1       4       2      10
2       7       0      20
3       0       8    4008
4      11       8       0
5      20       2       1
6       0       2    4820
7      20       2       1
8      15       5       1
9      16       5       1

想要的输出:

df_out=pd.DataFrame({'value1_count':[2],
             'value2_count':[1],
             'value3_ount':[1]})
 value1_count  value2_count  value3_ount
0             2             1            1

【问题讨论】:

    标签: python-3.x pandas numpy pandas-groupby


    【解决方案1】:

    试试这个

    df.eq(0).astype(int).diff().eq(-1).sum()
    
    Out[77]:
    value1    2
    value2    1
    value3    1
    dtype: int64
    

    要获得准确的输出,只需添加以下内容

    df.eq(0).astype(int).diff().eq(-1).sum().to_frame().T.add_suffix('_count')
    
    Out[85]:
       value1_count  value2_count  value3_count
    0             2             1             1
    

    【讨论】:

    • 您可能想要更新您的答案,因为给定的预期输出是具有新列名的新数据框
    • @DishinHGoyani:我认为将系列制作成数据框是微不足道的,所以我将其保留为系列。如你所说。我进行了编辑以使其成为预期的输出:)
    【解决方案2】:

    这是你可以做的事情

    df_out=pd.DataFrame({'value1_count':[df['value1'].value_counts()[0]],'value2_count':[df['value2'].value_counts()[0]],'value3_count':[df['value3'].value_counts()[0]]})
    

    输出

        value1_count    value2_count    value3_count
    0         2              1               1
    

    .value_counts() 返回一个 pandas.Series 对象,其中包含所有值的频率,索引就是值。因此,在索引 [0] 处,您可以找到列中零的频率。

    【讨论】:

      【解决方案3】:
      >>> columns_name = ['value1_count','value2_count','value3_ount']
      >>> df_out = pd.DataFrame((df==0).sum().values.reshape(1,-1), columns=columns_name )
      >>> df_out
         value1_count  value2_count  value3_ount
      0             2             1            1
      

      【讨论】:

        猜你喜欢
        • 2017-04-13
        • 2019-01-05
        • 1970-01-01
        • 2020-01-19
        • 2021-03-18
        • 2014-02-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多