合并具有相同维度的两个数据集?

时间:2020-04-06 14:42:24

标签: python pandas lambda merge finance

基于股票数据,我为要购买的股票(获胜者)和卖空者(失败者)创建了两个数据框。这意味着两个不是“ Winner”或“ Loser”的数据框中的值都取值为“ False”。

WinLos_df = creturns_df.copy()
WinLos_df = WinLos_df.apply(lambda x: (x >= creturns_df['upper bound']))
WinLos2_df = creturns_df.copy()
WinLos2_df = WinLos2_df.apply(lambda x: (x <= creturns_df['lower bound']))
WinLos_df[WinLos_df == True] = 'Winner'
WinLos2_df[WinLos2_df == True] = 'Loser'
print(WinLos_df.tail())
print(WinLos2_df.tail())

下面是两个数据集的摘要:

失败者:

                    MMM    ABT   ABBV   ABMD    ACN   ATVI   ADBE    AMD  \
31-10-2019 00:00  Loser  False  Loser  Loser  False  False  False  False   
29-11-2019 00:00  Loser  False  False  Loser  False  False  Loser  False   
31-12-2019 00:00  False  False  False  Loser  False  False  False  False   
31-01-2020 00:00  Loser  False  False  Loser  False  False  False  False   
21-02-2020 00:00  Loser  False  False  Loser  False  False  False  False 

优胜者:

                   MMM    ABT    ABBV   ABMD    ACN    ATVI    ADBE     AMD  \
31-10-2019 00:00  False  False   False  False  False  Winner   False   False   
29-11-2019 00:00  False  False   False  False  False  Winner   False  Winner   
31-12-2019 00:00  False  False   False  False  False  Winner   False  Winner   
31-01-2020 00:00  False  False  Winner  False  False  Winner   False  Winner   
21-02-2020 00:00  False  False  Winner  False  False  Winner  Winner  Winner 

现在,我想加入或合并这两个数据框,以便获得一个值为“ Winner”,“ Loser”和“ False”的数据框。 没有观察到同时出现“赢家”和“失败者”两个值。

是否有任何巧妙的方法将这两者结合起来? 我希望我的问题是可以理解的,并且我已经提供了足够的代码。

1 个答案:

答案 0 :(得分:1)

您可以根据需要使用dfs的固有值

WinLos = WinLos_df.values
WinLos2 = WinLos2_df.values
n,m = WinLos_df.shape

merged = np.empty(shape=(n,m), dtype=object)

for i in range(n):
  for j in range(m):
      merged[i,j] = False
      if WinLos[i,j]:
        merged[i,j] = 'Winner'
      if WinLos2[i,j]:
        merged[i,j] = 'Looser'

,然后可能将合并的数组转移到数据帧中