熊猫数据集 2 列最小值和最大值确定一列

时间:2021-03-14 14:11:54

标签: python pandas

我有一个像这样的数据帧 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 的日子里:

  • 如果是 minV 的一天,那么 --> 1000
  • 如果是 maxV 的一天,那么 --> -1000 类似于:
             val    
2008-01-04   1000.00   
2008-01-07  -1000.00 
2008-01-08   1000.00 
2008-01-10  -1000.00

1000 是一个常数

1 个答案:

答案 0 :(得分:2)

您可以将 dropnaall 一起使用来删除任何完全为空的行,然后使用 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