【发布时间】:2023-03-24 16:04:01
【问题描述】:
我有以下数据框:
date Price_C_1 OI_C_1
0 2021-03-05 549.75 37442
1 2021-03-08 549.75 37739
2 2021-03-09 542.5 37448
3 2021-03-10 537.0 39707
4 2021-03-11 551.0 39136
.. ... ... ...
95 2021-07-19 562.5 188911
96 2021-07-20 562.25 186953
97 2021-07-21 585.25 176430
98 2021-07-22 592.5 0
99 2021-07-23 597.75 0
我想将 OI_C_1 中的“0”值替换为之前的非 0 值。
我试过了:
data['OI_C_1'] = np.where(data['OI_C_1']==0, data['OI_C_1'].shift(), data['OI_C_1'] )
但我明白了:
date Price_C_1 OI_C_1
0 2021-03-05 549.75 37442
1 2021-03-08 549.75 37739
2 2021-03-09 542.5 37448
3 2021-03-10 537.0 39707
4 2021-03-11 551.0 39136
.. ... ... ...
95 2021-07-19 562.5 188911
96 2021-07-20 562.25 186953
97 2021-07-21 585.25 176430
98 2021-07-22 592.5 176430
99 2021-07-23 597.75 0
所以还有一个“0”值。
有没有办法强制 np.where 从顶部开始一次运行一行? 谢谢
【问题讨论】:
-
使用
np.where作为记录,而不是你希望它工作。它不是一个迭代器。这是一个 python 函数,需要 3 个数组,并返回一个(或此处为 3 系列)。
标签: python python-3.x pandas dataframe numpy