У меня есть два dataframes
, например,
import pandas as pd
import numpy as np
from random import shuffle
df_data = pd.DataFrame(data=np.random.randint(low=0, high=10, size=(10,3)), columns=['A', 'B', 'C'])
keys = np.arange(0, 10)
shuffle(keys)
df_data['keys'] = keys
key_data = pd.DataFrame(data=np.reshape(np.arange(1,10), (3,3)), columns=['Key_col1', 'Key_col2', 'Key_col3'])
key_data['Timestamp'], key_data['Info'] = ['Mon', 'Wed', 'Fri'], [13, 2, 47]
, который возвращает, что-то вроде этого:
A B C keys
0 3 9 2 5
1 7 9 4 7
2 9 6 6 0
3 9 9 0 9
4 8 5 8 6
5 2 5 7 3
6 5 1 2 4
7 3 9 6 2
8 4 2 3 8
9 6 5 5 1
и это:
Key_col1 Key_col2 Key_col3 Timestamp Info
0 1 2 3 Mon 13
1 4 5 6 Wed 2
2 7 8 9 Fri 47
I 'мы хотели бы использовать столбец 'keys
' в первом кадре данных для поиска только столбцов Key во втором кадре данных (т. е. Key_col1
, Key_col2
, Key_col3
) (поскольку столбец 'info' может содержать значениястолько ключей).
Затем я добавлю столбцы Timestamp
и Info
в строку, в которой есть совпадение для key
.
Ожидаемый вывод для строки0 будет следующим:
A B C keys Timestamp Info
0 3 9 2 5 Wed 2
Мой подход заключается в том, чтобы сначала установить подмножество моего key_df для значения:
key_data.iloc[:, 0:3] == 2
OUT
Key_col1 Key_col2 Key_col3
0 False True False
1 False False False
2 False False False
На следующем шаге я пытаюсь вернуть только строку, в которойзначение True
происходит с использованием df.loc
key_data.loc[:, key_data.iloc[:, 0:3] == 2]
Но это приводит к ошибке ValueError: Cannot index with multidimensional key
Может кто-нибудь помочь мне вернуть строку, в которой значение True
происходит такчто я могу использовать этот индекс для выбора места добавления моих данных?
Спасибо
РЕДАКТИРОВАТЬ: ключи уникальны, и все они присутствуют ровно в 1 из3 ключевых столбца.