В настоящее время я пытаюсь заменить информацию о фрейме данных, используя другой фрейм данных и серию, для моего анализа моделирования.
Пример игрушки следующий:
A - это фрейм информации о пользователе, B - этоинформационный фрейм информации об услуге, а C - это последовательная информация о том, изменил ли пользователь услугу.
TableA (user's current service info):
cost location
John 100 Tokyo
Tom 50 Seoul
Andy 50 Seoul
Mark 80 Seoul
TableB (service info):
cost location
premium_T 100 Tokyo
basic_T 60 Tokyo
premium_S 80 Seoul
basic_S 50 Seoul
Table C (service change info):
change
John no
Tom no
Andy premium_S
Mark basic_S
, используя приведенные выше данные, я хотел бы изменить информацию в таблице A, используя данные в таблицах B и C. Другими словами, я хочу:
TableA' (modified user's service info):
cost location
John 100 Tokyo
Tom 50 Seoul
Andy 80 Seoul
Mark 50 Seoul
КодЯ использовал:
TableA = pd.DataFrame(index = ['John', 'Tom', 'Andy', 'Mark'],
data = {'cost': [100,50,50,80],
'location': ['Tokyo', 'Seoul', 'Seoul', 'Seoul']})
TableB = pd.DataFrame(index = ['premium_T', 'basic_T', 'premium_S', 'basic_S'],
data = {'cost': [100, 60, 80, 50],
'location': ['Tokyo','Tokyo','Seoul','Seoul']})
TableC = pd.Series( ['no', 'no', 'premium_S', 'basic_S'], index = ['John', 'Tom', 'Andy', 'Mark'])
customer_list = TableA.index.tolist()
for k in customer_list:
if TableC.loc[k] != 'no':
TableA.loc[k] = TableB.loc[TableC.loc[k]]
Код работает и предоставляет результаты, которые я желаю.
Однако мне приходится многократно выполнять такую работу для очень большого набора данных, и мне нужно быстрееспособ сделать такие замены.
Есть идеи?Я думаю, что повторное использование .loc является проблемой, но я еще не нашел вероятного решения.Я посмотрел на pd.update () или pd.replace (), но, похоже, это не то, что я ищу.
Заранее спасибо