我试着在DataFrame df的基础上创建一个有几个条件的虚拟DataFrame df_dummy.

  • 如果价值大于;0-->1.
  • 如果价值<0-->0
  • 否则(0,NaN)——>0
df:
            ID1     ID2     ID3
Date            
2022-01-01  -1.0    -0.1    0.0
2022-01-02  0.0     1.2     0.7
2022-01-03  NaN     2.0     1.0
2022-01-04  -0.8    0.0     0.0
2022-01-05  1.1     NaN     -0.5

df_dummy:
            ID1     ID2     ID3
Date            
2022-01-01  0       0       NaN
2022-01-02  NaN     1       1
2022-01-03  NaN     1       1
2022-01-04  NAN     NaN     NaN
2022-01-05  1       NaN     0

我试着给假人定义一个这样的信号:

def signal(x):
    if(x>0): 
        return 1
    elif(x<0):
        return 0
    else:
        return np.nan
df_dummy = df[:].apply(lambda x: signal, axis=1)

data_signal = df[:].apply(lambda x: 1 if x>0 -1 if x<0 else np.nan, axis=1)

有没有一种直观的方式为df_dummy人创造这样的条件?

谢谢!

推荐答案

你可以使用np.select:

# np.select returns a numpy array
# so we copy data to reserve index/columns
df_dummy = df.copy()
df_dummy[:] = np.select((df > 0, df < 0), (1, 0), np.nan)

也:

df_dummy = pd.DataFrame(np.select((df > 0, df < 0), (1, 0), np.nan),
                        index=df.index, columns=df.columns)

输出:

            ID1  ID2  ID3
Date                     
2022-01-01  0.0  0.0  NaN
2022-01-02  NaN  1.0  1.0
2022-01-03  NaN  1.0  1.0
2022-01-04  0.0  NaN  NaN
2022-01-05  1.0  NaN  0.0

Python相关问答推荐

Gekko中基于时间的间隔约束

504未连接IB API TWS错误—即使API连接显示已接受''

如何在PythonPandas 中对同一个浮动列进行逐行划分?

多个矩阵的张量积

为什么后跟inplace方法的`.rename(Columns={';b';:';b';},Copy=False)`没有更新原始数据帧?

函数()参数';代码';必须是代码而不是字符串

Pandas ,快速从词典栏中提取信息到新栏

ValueError:必须在Pandas 中生成聚合值

如何在包含时间戳的词典列表中找到每天的第一个时间?

用考克斯回归的生存分析系列的真值是模棱两可的.

如何在python中为列表中的每个项目分配来自另一个列表的相等数量的项目

如何将数据从一个数据框按行添加到另一个数据框,仅当两个数据框中第一列的值相等时?

如何在不窥视future 的情况下,在Python中对OHLC数据帧进行重采样?

在matplotlib中使用渐变 colored颜色 填充区域之间

是否可以在dash-cytoscape中使用宽度优先布局中的epthSort参数?

极轴:通过创建多个新列对列进行操作

如何使用矢量化操作确定Pandas 数据帧中顺序条目的最终状态?

设置gtuner计算机视觉时遇到问题

POLARS:从GROUP_BY列表中 Select 值,并从另一列中 Select 值

如何使用libclang';S Python绑定获取返回类型和参数类型的完全限定名?