根据另一个数据框选择值

时间:2018-07-16 16:19:20

标签: python dataframe sign

我有两个相同大小的数据框,相同的列和相同的索引。

df1:

symbol                      fund1  fund2  fund3  ...     ...    ...  
id   datetime                                                                  
10   2012-10-19 09:05:00     -100    0       0     50      0      0   
20   2012-10-19 09:10:00     0      300      0      0      0      0 

df2:

symbol                      fund1  fund2  fund3  ...     ...    ...  
id   datetime                                                                  
10   2012-10-19 09:05:00   -0.5      0      0     0.005      0      0   
20   2012-10-19 09:10:00     0      -10     0      0      0      0 

仅当df1中每个元素的符号与df2中的符号不​​同(相反)时,我想接收一个新的数据帧,该数据帧采用df1中的值。

因此,该示例的结果将是:

df_outcome:

symbol                         fund1   fund2     fund3  ...     ...    ...  
    id   datetime                                                                  
    10   2012-10-19 09:05:00     0       0       0      0      0      0   
    20   2012-10-19 09:10:00     0      300      0      0      0      0 

我发现有一个函数:np.sign(df),我想我应该首先将此函数应用于两个表,但是我应该怎么做才能将这些值与这些“ sign”表进行比较,并且如果它们是相反的,则逐个取,取df1中的值?

1 个答案:

答案 0 :(得分:3)

您可以将wherenp.sign和不等式测试结合使用:

df1.where(np.sign(df1) != np.sign(df2)).fillna(0)

输出:

                        fund1  fund2  fund3  fund4  fund5  fund6
id datetime                                                     
10 2012-10-19 09:05:00    0.0    0.0    0.0    0.0    0.0    0.0
20 2012-10-19 09:10:00    0.0  300.0    0.0    0.0    0.0    0.0
相关问题