Я пытаюсь вернуть каждый элемент подряд, исходя из мест в Column D
.
В данный момент я делаю это через df = df.loc[df['D'] == '#specific place']
.
Это прекрасно работает, но если у меня 50 разных мест, этот код становится очень неэффективным.Я должен был бы изменить df = df.loc[df['D'] == '#another specific place']
50 раз.Я бы сделал это, если бы места остались прежними, но каждый набор данных содержит разные места.
Есть ли более эффективный способ вернуть строки для каждого места?У меня есть отдельное df
с каждым местом, которое я могу вернуть на list
.Могу ли я использовать значения в этом списке для возврата функций в
import pandas as pd
places = ['Home','Away','Shops']
d = ({
'C' : ['08:00:00','XX','08:10:00','XX','08:41:42','XX','08:50:00','XX', '09:00:00', 'XX','09:15:00','XX','09:21:00','XX','09:30:00','XX','09:40:00','XX'],
'D' : ['Home','','Home','','Away','','Shops','','Away','','Shops','','Home','','Away','','Home',''],
'E' : ['Num:','','Num:','','Num:','','Num:','','Num:', '','Num:','','Num:','','Num:', '','Num:', ''],
'F' : ['1','','1','','1','','1','','1', '','2','','2','','1', '','2',''],
'A' : ['A','','A','','A','','A','','A','','A','','A','','A','','A',''],
'B' : ['Stop','','Res','','Stop','','Start','','Res','','Stop','','Res','','Start','','Start','']
})
df = pd.DataFrame(data=d)
#Select desired place
Home = df.loc[df['D'] == 'Home']
Shops = df.loc[df['D'] == 'Shops']
Away = df.loc[df['D'] == 'Away']
Предполагаемый вывод:
A B C D E F
0 A Stop 08:00:00 Home Num: 1
2 A Res 08:10:00 Home Num: 1
12 A Res 09:21:00 Home Num: 2
16 A Start 09:40:00 Home Num: 2
6 A Start 08:50:00 Shops Num: 1
10 A Stop 09:15:00 Shops Num: 2
4 A Stop 08:41:42 Away Num: 1
8 A Res 09:00:00 Away Num: 1
14 A Start 09:30:00 Away Num: 1