Объединение двух наборов данных с одинаковыми размерами? - PullRequest
0 голосов
/ 06 апреля 2020

Основываясь на данных об акциях, я создал два кадра данных о акциях, которые я хочу купить (Победитель) и Шорт (Проигравший). Это означает, что значения в обоих фреймах данных, которые не являются «Победителем» или «Проигравшим», принимают значение «Ложь».

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 

Теперь я хочу объединить или объединить эти два блока данных, чтобы я получил один блок данных со значениями «Победитель», «Проигравший» и «Ложь». Там нет наблюдений, которые принимают оба значения "Победитель" и "Проигравший".

Есть ли какой-нибудь разумный способ объединить эти два? Надеюсь, мой вопрос понятен, и я предоставил достаточно кода.

1 Ответ

1 голос
/ 06 апреля 2020

Вы можете использовать собственные значения 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'

, а затем потенциально перенести объединенный массив в кадр данных

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...