Я пытаюсь эффективно заменить определенные значения значимой информацией в pandas df
.Ниже приведен пример df's
, с которым я работаю.
Этот df
является примером значимой информации.Каждый трехбуквенный код соответствует реальному месту.Например, ABC = Home
import pandas as pd
m = pd.DataFrame({
'Place' : ['Home','Away'],
'Code' : ['ABC','DEF']})
Вывод:
Code Place
0 ABC Home
1 DEF Away
Я хочу заменить значения Column D
информацией о месте.Так что Home
заменит ABC
.После этого кода есть дополнительные пункты, но я могу удалить их достаточно легко.
d = pd.DataFrame({
'C' : ['08:00:00','XX','08:10:00','XX','08:41:42','XX','08:50:00','XX', '09:00:00'],
'D' : ['ABC-Thu','','ABC-Thu','','DEF-Thu','','ABC-Thu','','DEF-Thu'],
'E' : ['Num:','','Num:','','Num:','','Num:','','Num:'],
'F' : ['1','','1','','1','','1','','1'],
'A' : ['A','','A','','A','','A','','A'],
'B' : ['Stop','','Res','','Stop','','Start','','Res']
})
В данный момент я делаю это вручную как таковой,
#remove last 4 items
d['D'] = [x[:-4] for x in d['D']]
#replace with appropriate place
d['D'] = d['D'].replace(['ABC'], 'Home')
d['D'] = d['D'].replace(['DEF'], 'Away')
Вывод:
A B C D E F
0 A Stop 08:00:00 Home Num: 1
1 XX
2 A Res 08:10:00 Home Num: 1
3 XX
4 A Stop 08:41:42 Away Num: 1
5 XX
6 A Start 08:50:00 Home Num: 1
7 XX
8 A Res 09:00:00 Away Num: 1
Но количество разных мест, которые нужноЗаменить можно до 40-50.Коды также могут меняться с каждым набором данных.Так что ABC
может равняться Home
в один день и Pool
в следующий.Как вы можете себе представить, не очень эффективно каждый день менять 40-50 разных мест.
Есть ли более эффективный цикл по каждому коду и замена информацией о месте?