python - 在 Pandas 系列中找到第一个非零值

标签 python pandas series

我有一个数字 Pandas 系列,其中 601 行按日期索引,如下所示。在引入一些非零值之前,这些值都是零。这一点因每个系列而异,所以我想找到一种方法来找到第一个非零值的索引并从该点开始绘制。

Name: users, dtype: float64 dates
2015-08-17 14:29:59-04:00    18
2015-08-16 14:29:59-04:00     3
2015-08-15 14:29:59-04:00    11
2015-08-14 14:29:59-04:00    12
2015-08-13 14:29:59-04:00     8
2015-08-12 14:29:59-04:00    10
2015-08-11 14:29:59-04:00     6
2015-08-10 14:29:59-04:00     6
2015-08-09 14:29:59-04:00     7
2015-08-08 14:29:59-04:00     7
2015-08-07 14:29:59-04:00    13
2015-08-06 14:29:59-04:00    16
2015-08-05 14:29:59-04:00    12
2015-08-04 14:29:59-04:00    14
2015-08-03 14:29:59-04:00     5
2015-08-02 14:29:59-04:00     5
2015-08-01 14:29:59-04:00     8
2015-07-31 14:29:59-04:00     6
2015-07-30 14:29:59-04:00     7
2015-07-29 14:29:59-04:00     9
2015-07-28 14:29:59-04:00     7
2015-07-27 14:29:59-04:00     5
2015-07-26 14:29:59-04:00     4
2015-07-25 14:29:59-04:00     8
2015-07-24 14:29:59-04:00     8
2015-07-23 14:29:59-04:00     8
2015-07-22 14:29:59-04:00     9
2015-07-21 14:29:59-04:00     5
2015-07-20 14:29:59-04:00     7
2015-07-19 14:29:59-04:00     6
                             ..
2014-01-23 13:29:59-05:00     0
2014-01-22 13:29:59-05:00     0
2014-01-21 13:29:59-05:00     0
2014-01-20 13:29:59-05:00     0
2014-01-19 13:29:59-05:00     0
2014-01-18 13:29:59-05:00     0
2014-01-17 13:29:59-05:00     0
2014-01-16 13:29:59-05:00     0
2014-01-15 13:29:59-05:00     0
2014-01-14 13:29:59-05:00     0
2014-01-13 13:29:59-05:00     0
2014-01-12 13:29:59-05:00     0
2014-01-11 13:29:59-05:00     0
2014-01-10 13:29:59-05:00     0
2014-01-09 13:29:59-05:00     0
2014-01-08 13:29:59-05:00     0
2014-01-07 13:29:59-05:00     0
2014-01-06 13:29:59-05:00     0
2014-01-05 13:29:59-05:00     0
2014-01-04 13:29:59-05:00     0
2014-01-03 13:29:59-05:00     0
2014-01-02 13:29:59-05:00     0
2014-01-01 13:29:59-05:00     0
2013-12-31 13:29:59-05:00     0
2013-12-30 13:29:59-05:00     0
2013-12-29 13:29:59-05:00     0
2013-12-28 13:29:59-05:00     0
2013-12-27 13:29:59-05:00     0
2013-12-26 13:29:59-05:00     0
2013-12-25 13:29:59-05:00     0

最佳答案

假设您的系列名为 s:

s = s.sort_index()
start = s.loc[s != 0].index
if len(start) > 0:
    filtered_series = s.ix[start[0]:]

您的数据似乎按时间向后排序(即最近的排在最前面),所以我首先对索引进行排序。

然后我使用 loc 获取系列中非负值的索引值。如果此列表返回任何内容(它可能是一个空列表),那么我将使用 .ix 从上面计算的第一个非零索引值到系列末尾对系列进行索引。

关于python - 在 Pandas 系列中找到第一个非零值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32084523/

相关文章:

python - 使用Python或Excel vba将单个Excel单元格内容拆分为不同的单元格

python - Pandas 命令不起作用 - 为什么? (例如 : df. drop(...))

python - 删除 Pandas 系列中的行并清理索引

python - 使用张量的值作为另一个张量的形状?

python - 使用 python move 文件

python - 电路 Python MQTT 异常 block

python - 在 Django DRF 中,我总是在序列化器的更新方法中收到 ValueError

python - Pandas 字符串系列到张量的 int 标准化

python - 如何在 Dataframe 中添加由 pd.Timestamp 和 float 组成的行

javascript - 具有多个系列的 Highchart.js 的正确 json 格式