我有两个相同大小、相同列和相同索引的数据框。
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 中获取值?
最佳答案
您可以将 where
与 np.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/