我有一个像这样的数据帧 dt
minV maxV
2008-01-02 NaN NaN
2008-01-03 NaN NaN
2008-01-04 37.33 NaN
2008-01-07 NaN 37.71
2008-01-08 36.21 NaN
2008-01-09 NaN NaN
2008-01-10 NaN 37.70
在每一行上,我可以有一个 minV 或一个 maxV。
我不能在同一天为 minV 和 maxV 设置一个非 NaN 值。 (不可能2008-01-08 36.21 37.71
)
我想创建另一个数据框,其中仅在具有 minV 或 maxV 而非 NaN 的日子里:
val
2008-01-04 1000.00
2008-01-07 -1000.00
2008-01-08 1000.00
2008-01-10 -1000.00
1000 是一个常数
答案 0 :(得分:2)
您可以将 dropna
与 all
一起使用来删除任何完全为空的行,然后使用 np.where
有条件地填充您的值。
import numpy as np
df = df.dropna(how='all')
df['val'] = np.where(df['minV'].isnull(), -1000,1000)
print(df[['val']])
输出
val
2008-01-04 1000
2008-01-07 -1000
2008-01-08 1000
2008-01-10 -1000