【问题标题】:python find the nearest nonzero element in df columnpython在df列中找到最近的非零元素
【发布时间】:2022-06-27 21:52:25
【问题描述】:

我有 df:

id   number
1     5
1      0
1      0
1      2    
2      0
3      1

我想编写一个函数来填充 0 个值。我想为每个 id(对于每个组),当 number 列中的值为零时,搜索列中的壁橱非零值并返回该值。例如 id 1 用 2 填充第二行和第三行。如果我没有像 id 2 这样的值,就保持原样。 我怎样才能做到这一点?谢谢

【问题讨论】:

  • 屏蔽零,然后使用 ffill 或 bfill 和 groupby。

标签: python pandas


【解决方案1】:

您可以mask 0,然后使用 groupby.transform 获取每个组的最小值(如果您有负值,则需要相对最小值),然后使用它来填充na,最后为组填充 0而不是只有零:

s = df['number'].mask(df['number'].eq(0))

df['number2'] = s.fillna(s.groupby(df['id']).transform('min').fillna(0),
                         downcast='infer')

输出:

   id  number  number2
0   1       5        5
1   1       0        2
2   1       0        2
3   1       2        2
4   2       0        0
5   3       1        1

【讨论】:

    猜你喜欢
    • 2022-09-27
    • 2023-04-09
    • 2023-01-31
    • 2015-11-25
    • 1970-01-01
    • 2018-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多