我有一个 pandas 数据框,其中包含给定 id 的每周值,看起来像:
我想将一些列值填充为 NaN。这里的条件是 id 的所有值,直到每行中的第一个非零值都必须为 NaN。因此,转换后的数据框应如下所示:
我试图通过提取每行的第一个非零值列来解决这个问题,然后它之前的所有值都可以填充为 NaN。但我无法弄清楚如何使用 pandas 来完成它,因为我是新手。
任何帮助将不胜感激。
最佳答案
temp = df.filter(like='val')
temp = temp.mask(temp.cumsum(1).eq(0), np.nan)
df.assign(**temp)
id val_week1 val_week2 val_week3 val_week4 val_week5
0 1 NaN NaN 3.0 2.0 0
1 2 1.0 0.0 0.0 2.0 3
2 3 NaN NaN NaN NaN 1
这个想法是对各列的值进行累积求和; 如果为0,则替换为NAN。
关于python - Pandas 根据某些条件在列中填充 NaN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70132755/