Создание словаря списков и фильтрация путем индексации по num_i_found
значениям:
Уведомление : если значения не совпадают, как для первых строк, они только в выборочных данных имеют значение 4
значения для 01/09/2019
, я предполагаю, что в реальных данных все 5 значений в d
для каждой даты и времени, поэтому работайте так, как вам нужно.
d = df1.groupby('F_Date')['F_Id'].apply(list).to_dict()
print (d)
{'01/09/2019': ['FT-56832', 'FT-93828', 'FT-78590', 'FT-14296'],
'02/09/2019': ['FT-13853', 'FT-18858', 'FT-62064', 'FT-58456', 'FT-69073'],
'03/09/2019': ['FT-19010', 'FT-94494', 'FT-73594', 'FT-82529'],
'04/09/2019': ['FT-33266', 'FT-16693'],
'05/09/2019': ['FT-69649']}
df2['new'] = df2.apply(lambda x: d.get(x['F_Date'], [])[:x['num_i_found']], axis=1)
print (df2)
F_Date num_i_found new
0 01/09/2019 5 [FT-56832, FT-93828, FT-78590, FT-14296]
1 01/09/2019 3 [FT-56832, FT-93828, FT-78590]
2 02/09/2019 5 [FT-13853, FT-18858, FT-62064, FT-58456, FT-69...
3 02/09/2019 5 [FT-13853, FT-18858, FT-62064, FT-58456, FT-69...
4 03/09/2019 3 [FT-19010, FT-94494, FT-73594]
5 02/09/2019 4 [FT-13853, FT-18858, FT-62064, FT-58456]
6 03/09/2019 4 [FT-19010, FT-94494, FT-73594, FT-82529]
7 03/09/2019 5 [FT-19010, FT-94494, FT-73594, FT-82529]
8 01/09/2019 5 [FT-56832, FT-93828, FT-78590, FT-14296]
9 01/09/2019 4 [FT-56832, FT-93828, FT-78590, FT-14296]
10 03/09/2019 3 [FT-19010, FT-94494, FT-73594]
11 04/09/2019 5 [FT-33266, FT-16693]
12 02/09/2019 4 [FT-13853, FT-18858, FT-62064, FT-58456]
13 04/09/2019 5 [FT-33266, FT-16693]
14 02/09/2019 4 [FT-13853, FT-18858, FT-62064, FT-58456]
15 05/09/2019 4 [FT-69649]
Если нужны строки:
d = df1.groupby('F_Date')['F_Id'].apply(list).to_dict()
df2['new'] = df2.apply(lambda x: ', '.join(d.get(x['F_Date'], [])[:x['num_i_found']]), axis=1)
print (df2)
F_Date num_i_found new
0 01/09/2019 5 FT-56832, FT-93828, FT-78590, FT-14296
1 01/09/2019 3 FT-56832, FT-93828, FT-78590
2 02/09/2019 5 FT-13853, FT-18858, FT-62064, FT-58456, FT-69073
3 02/09/2019 5 FT-13853, FT-18858, FT-62064, FT-58456, FT-69073
4 03/09/2019 3 FT-19010, FT-94494, FT-73594
5 02/09/2019 4 FT-13853, FT-18858, FT-62064, FT-58456
6 03/09/2019 4 FT-19010, FT-94494, FT-73594, FT-82529
7 03/09/2019 5 FT-19010, FT-94494, FT-73594, FT-82529
8 01/09/2019 5 FT-56832, FT-93828, FT-78590, FT-14296
9 01/09/2019 4 FT-56832, FT-93828, FT-78590, FT-14296
10 03/09/2019 3 FT-19010, FT-94494, FT-73594
11 04/09/2019 5 FT-33266, FT-16693
12 02/09/2019 4 FT-13853, FT-18858, FT-62064, FT-58456
13 04/09/2019 5 FT-33266, FT-16693
14 02/09/2019 4 FT-13853, FT-18858, FT-62064, FT-58456
15 05/09/2019 4 FT-69649