У меня есть два кадра данных панд. Один (DF1) содержит данные о фактическом «типе» информации в каждом Имени, а второй (DF2) содержит, какой «тип» присутствует в Имени. DF2 не будет содержать все имена из DF1. Необходимо вернуть Dataframe со строками из DF1, которые удовлетворяют из DF2.
Например, DF1:
Name type(uuid) start letter etc..
0 2 a_1 011 H
1 2 a_3 012 I
2 1 a_2 203 K
3 4 a_1 943 P
4 5 a_3 925 L
DF2 матрица поиска:
Name a_1 a_2 a_3 a_n
0 1 0 1 0 0
1 2 1 0 1 0
2 3 0 0 0 0
DF2является матрицей результатов от разделения поезда / теста. Следовательно, не содержит полный набор данных. Основываясь на именах в df, мне нужно выбрать строки из DF1.
Нужно будет вывести фрейм данных.
DF Тип A:
Name type start letter
0 2 a_1 011 H
1 2 a_3 012 I
2 1 a_2 203 K
Я пытался использоватьмаски для этого. Но это не самый эффективный способ сделать это. Я довольно новичок в использовании панд и чувствую, что есть лучший способ сделать это. Что я пробовал:
type = df_two.columns.values
for name in df_two.index.tolist():
mask = df_one.type.apply(lambda x: any(item for item in type if item in x))
mask_doc = (df_one['Name'].values == name) & (mask)
temp = df_one[mask_doc]
Это дает мне отдельный фрейм данных для каждого Имени, и я должен объединить их позже. Это довольно медленно.
Есть ли лучший / эффективный подход для этого в пандах?
Редактировать: Значения a_1, .., a_n на самом деле равны uuid в моем наборе данных.
Редактировать2: пытался обобщить вопрос слишком много. Вычистил до насущной проблемы.