【发布时间】:2022-12-08 01:48:43
【问题描述】:
想象一下我有一个这样的数据框:
df = pd.DataFrame({"ID":["A","B","C","C","D"],
"DAY 1":[0, 0, 4, 0, 8],
"DAY 2":[3, 0, 4, 1, 2],
"DAY 3":[0, 2, 9, 9, 6],
"DAY 4":[9, 2, 4, 5, 7]})
df
Out[7]:
ID DAY 1 DAY 2 DAY 3 DAY 4
0 A 0 3 0 9
1 B 0 0 2 2
2 C 4 4 9 4
3 C 0 1 9 5
4 D 8 2 6 7
我想遍历每一行并在看到非零值之前替换行开头的所有 0 值。
ID 列不应该处于这种情况,只有其他列。我想用 NaN 替换这些值。所以输出应该是这样的:
ID DAY 1 DAY 2 DAY 3 DAY 4
0 A nan 3 0 9
1 B nan nan 2 2
2 C 4 4 9 4
3 C nan 1 9 5
4 D 8 2 6 7
并注意 df.loc[0, "DAY 3"] 中的 0 值仍然存在,因为它不满足条件,因为这种情况只发生在 df.loc[0, "DAY 2"] 之前。
任何人都可以帮助我吗?
【问题讨论】: