基于另一个datafram选择值

2024-03-28 17:00:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个相同大小、相同列和相同索引的数据帧

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中获取值


Tags: 数据函数id元素示例dfdatetime符号
1条回答
网友
1楼 · 发布于 2024-03-28 17:00:47

您可以将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

相关问题 更多 >