python - 根据另一个数据框选择值

标签 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),我想我应该首先将此函数应用于两个表,但是我应该做什么来将这些值与这些“符号”表进行比较,并且,如果它们相反,逐个元素,从 df1 中获取值?

最佳答案

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

关于python - 根据另一个数据框选择值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51366189/

相关文章:

pandas - 有没有办法在忽略索引的同时水平连接相同长度的数据帧?

java - 使用java在spark中的函数之间

c++ - 如何对 Linux 共享库进行签名?

python - 在 Pandas 渲染中跳过 X 轴上的中间日期时间值

Python BeautifulSoup 错误测试

python - 对于两个数据帧,如何检索两个标签值的组合在一个数据帧中但不在另一个数据帧中的行

java - 如何使用 .net 和 wcf 中的 java webservice

java - itext5 在上下文中签署图像

python - Scrapy 自定义 ImagePipeline Settings.py

python - 如何将格式为 'dd/mm/yyyy %H:%M' 的 Pandas 数据框日期列转换为 'yyyy/mm/dd %H:%M'