【问题标题】:Count number of rows between filled values in python dataframe计算python数据框中填充值之间的行数
【发布时间】:2016-06-23 01:18:32
【问题描述】:

我对熊猫还是很陌生。我想计算具有零值的行数,直到具有值的下一行。因此,例如,我想采用如下所示的数据框:

id   Distance
00   0   
01   0   
02   0   
03   0   
04   0   
05   10   
06   0   
07   0   
08   0   
09   0   
10   16   
11   0   
12   0   
13   6

并让它变成这样:

id    Distance     count
05    10            6
10    16            6
13    6             3

谢谢

【问题讨论】:

  • 你试过什么?我会从non_zeros = np.nonzero(data.Distance.values) 之类的东西开始。现在可以使用一个简单的循环来计算您想要的值。
  • 我能够让它与 for 循环一起工作,但它非常笨重。我会研究非零,以前没听说过。

标签: python pandas dataframe


【解决方案1】:

这段代码实现了你想要的。请注意,您需要 .copy(),因为 counts 是动态修改的。

import pandas as pd
import numpy as np

df = pd.DataFrame({'Distance': [0,0,0,0,0,10,0,0,0,0,16,0,0,6]})

non_zeros = df['Distance'].values != 0
zeros = ~non_zeros

counts = np.cumsum(zeros)[non_zeros]
counts[1:] -= counts[:-1].copy()

df = df[non_zeros]
df['count'] = counts

print(df)

此代码产生输出

    Distance  count
5         10      5
10        16      4
13         6      2

您可能希望将+1 添加到count 列。

【讨论】:

    猜你喜欢
    • 2017-09-09
    • 1970-01-01
    • 2023-02-03
    • 2017-07-19
    • 1970-01-01
    • 2019-03-21
    • 2020-01-25
    • 1970-01-01
    • 2023-02-26
    相关资源
    最近更新 更多